android编辑文本过滤器

时间:2017-05-15 07:51:39

标签: android

我正在开发Android APP,我想让EditText字段只允许使用3种语言的Alpha字符。

我正在尝试为我的EditText添加过滤器

 firstNameEditText.setFilters(new InputFilter[]{new InputFilter() {

        @Override
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            boolean keepOriginal = true;
            StringBuilder sb = new StringBuilder(end - start);
            for (int i = start; i < end; i++) {
                char c = source.charAt(i);
                if (isCharAllowed(c)) // put your condition here
                    sb.append(c);
                else
                    keepOriginal = false;
            }
            if (keepOriginal)
                return null;
            else {
                if (source instanceof Spanned) {
                    SpannableString sp = new SpannableString(sb);
                    TextUtils.copySpansFrom((Spanned) source, start, sb.length(), null, sp, 0);
                    return sp;
                } else {
                    return sb;
                }
            }
        }

        private boolean isCharAllowed(char c) {
            Pattern ps = Pattern.compile("^[:alpha: ]+$");
            Matcher ms = ps.matcher(String.valueOf(c));
            return ms.matches();
        }
    }});

它正在工作,但问题是:我无法在EditText中写任何空格。

2 个答案:

答案 0 :(得分:0)

您可以检查空白字符:Character.isWhitespace(myChar) 所以例如在isCharAllowed功能中,只需添加

即可
if(Character.isWhitespace(c)) return true;

答案 1 :(得分:0)

在编辑文本中添加此属性。

android:digits="abcdefghijklmnopqrstuvwxyz1234567890 "

此属性不允许使用其他字符。