如何创buildEditText只接受在Android的字母表?

如何才能在Android中的EditText中只input字母表?

添加此行与您的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 ""; } } }); 

请尽量testing!

 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,"; } 

通过Xml,你可以轻松地在XML(editText)中input以下代码:

 android:digits="abcdefghijklmnopqrstuvwxyz" 

只有人物将被接受…

对于那些希望editText只接受字母和空格(既不包含数字也不包含任何特殊字符)的用户,可以使用这个InputFilter 。 在这里我创build了一个名为getEditTextFilter()的方法,并在其中写入了InputFilter。

 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(); } }; } 

find它后,将这个inputFilter附加到你的editText中,像这样:

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

最初的功劳归于@UMAR,他给出了使用正则expression式和@KamilSeweryn进行validation的想法

把代码edittext xml文件,

  android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 

对于空格,您可以在数字中添加单个空格。 如果你需要任何特殊的字符,如点,逗号也可以到这个列表

android:digits =“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”

尝试这个

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

其他的inputType可以在这里find..

如果还有人想要这个, Java正则expression式支持Unicode吗? 是一个很好的。 这是为了当你只需要字母(不pipe是什么编码 – japaneese,sweedish)是一个EditText。 稍后,您可以使用MatcherPattern.compile()

在EditText中仅允许字母表android:

 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});