Как я могу ввести только алфавиты в EditText в android?
Как создать EditText принимает Alphabets только в android?
Ответ 1
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,";
}
Ответ 2
Добавьте эту строку с тегом EditText.
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Тег EditText должен выглядеть так:
<EditText
android:id="@+id/editText1"
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
Ответ 3
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.getText().toString();
}
}
});
пожалуйста, проверьте все тщательно!
Ответ 4
Для тех, кто хочет, чтобы их editText принимал только алфавиты и пробелы (ни числа, ни специальные символы), можно использовать этот InputFilter
.
Здесь я создал метод с именем 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();
}
};
}
Прикрепите этот входной фильтр к вашему editText после его поиска, например:
mEditText.setFilters(new InputFilter[]{getEditTextFilter()});
Оригинальный кредит принадлежит @UMAR, который дал идею проверки правильности выражения и @KamilSeweryn
Ответ 5
Через Xml вы можете легко сделать так, как введите следующий код в xml (editText)...
android:digits="abcdefghijklmnopqrstuvwxyz"
будут приняты только символы...
Ответ 6
Поместите код XML файла edittext,
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
Ответ 7
Для пробелов вы можете добавить один пробел в цифрах. Если вам нужны какие-либо специальные символы, такие как точка, запятая, вы также можете добавить в этот список
android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
Ответ 8
Разрешить только алфавиты в 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});
Ответ 9
Попробуйте это
<EditText
android:id="@+id/EditText1"
android:text=""
android:inputType="text|textNoSuggestions"
android:textSize="18sp"
android:layout_width="80dp"
android:layout_height="43dp">
</EditText>
Можно найти другой тип ввода Здесь..
Ответ 10
Если кто-то еще этого хочет, Java regex для поддержки Unicode? является хорошим. Это когда вы хотите ТОЛЬКО письма (независимо от того, какая кодировка - japaneese, sweedish) - это EditText. Позже вы можете проверить его, используя Matcher
и Pattern.compile()