我怎么可以只进入字母EditText在。

有帮助吗?

解决方案 3

EditText state = (EditText) findViewById(R.id.txtState);


                Pattern ps = Pattern.compile("^[a-zA-Z ]+$");
                Matcher ms = ps.matcher(state.getText().toString());
                boolean bs = ms.matches();
                if (bs == false) {
                    if (ErrorMessage.contains("invalid"))
                        ErrorMessage = ErrorMessage + "state,";
                    else
                        ErrorMessage = ErrorMessage + "invalid state,";

                }

其他提示

添加此行与你的EditText标签。

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

您的EditText标签应该是这样的:

<EditText
        android:id="@+id/editText1"
        android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
edittext.setFilters(new InputFilter[] {
    new InputFilter() {
        public CharSequence filter(CharSequence src, int start,
                int end, Spanned dst, int dstart, int dend) {
            if(src.equals("")){ // for backspace
                return src;
            }
            if(src.toString().matches("[a-zA-Z ]+")){
                return src;
            }
            return "";
        }
    }
});

请测试彻底虽然!

对于那些谁希望自己的EDITTEXT应该只接受字母和空格(既不NUMERICS也没有任何特殊字符),那么就可以使用这个InputFilter。 在这里,我已经创建了一个方法名为getEditTextFilter()并写入它里面的输入过滤。

public static InputFilter getEditTextFilter() {
        return 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("^[a-zA-Z ]+$");
                Matcher ms = ps.matcher(String.valueOf(c));
                return ms.matches();
            }
        };
    }

附加这InputFilter输入您的EDITTEXT发现它之后,如下所示:

mEditText.setFilters(new InputFilter[]{getEditTextFilter()});

在原来归功于@UMAR谁给了使用正则表达式和@KamilSeweryn

验证的想法

通过XML可以很容易地做到如以下类型中XML代码(EDITTEXT)...

android:digits="abcdefghijklmnopqrstuvwxyz"

<强>仅字符将被接受...

把代码的EditText xml文件,

   android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

允许仅在字母的EditText机器人:

InputFilter letterFilter = new InputFilter() {
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            String filtered = "";
            for (int i = start; i < end; i++) {
                char character = source.charAt(i);
                if (!Character.isWhitespace(character)&&Character.isLetter(character)) {
                    filtered += character;
                }
            }

            return filtered;
        }

    };
editText.setFilters(new InputFilter[]{letterFilter}); 

有关空格,则可以在数字添加单个空格。如果您需要任何特殊字符,如点,逗号也可以添加到这个列表

  

机器人:位数= “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”

如果有人仍然想要这个, Java regex支持Unicode? 是一个很好的一个。这是因为当你想要的只有字母(无论什么样的编码-日本,瑞典文)的一个EditText.后来,你可以检查它使用 MatcherPattern.compile()

尝试此

<EditText
  android:id="@+id/EditText1"
  android:text=""
  android:inputType="text|textNoSuggestions"
  android:textSize="18sp"
  android:layout_width="80dp"
  android:layout_height="43dp">
</EditText>

其他的inputType可以发现 这里 ..

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top