首页 > 解决方案 > 如何在android的edittext中使第一个字符为数字,第二个字符为字母?

问题描述

我想让第一个字符为数字,第二个字符为字母。我试过这样,但它完全不允许字母。

public static InputFilter[] myfilter=new InputFilter[]{
        new InputFilter() {
            @Override
            public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                for (int i=start;i<end;i++){
                    if (!Character.isDigit(source.charAt(0))){
                        return "";
                    }

                }
                return null;
            }
        }
    };

//////

 edittext1.setFilters(myfilter);

我想让第一个字符只有数字,第二个字符只有字母。我怎样才能做到这一点?

标签: androidandroid-edittextcharacter

解决方案


为什么不添加一个 TextWatcher 并为输入添加约束?

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                if(charSequence.length() == 1 && !Character.isDigit(charSequence.charAt(0))){
                    editText.setText("");
                }

                if(charSequence.length() == 2 && !Character.isAlphabetic(charSequence.charAt(1))){
                    editText.setText(editText.getText().subSequence(0,1));
                    editText.setSelection(editText.getText().length());
                }
            }

            @Override
            public void afterTextChanged(Editable editable) {

            }
        });

推荐阅读