如何创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。 稍后,您可以使用Matcher
和Pattern.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});