#java #android #android-edittext
#java #Android #android-edittext
Вопрос:
Мне нужен EditText, который допускает ввод текста только от А до я, без цифр или других символов. Я обнаружил, что мне нужно использовать InputFilter, но я не понимаю, как работает этот код.
InputFilter filter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
for (int i = start; i < end; i ) {
if (!Character.isLetterOrDigit(source.charAt(i))) {
return "";
}
}
return null;
}
};
edit.setFilters(new InputFilter[]{filter});
Ответ №1:
Опубликованный вами код добавляет пользовательский фильтр в поле EditText. Он проверяет, не является ли введенный символ числом или цифрой, а затем, если это так, возвращает пустую строку «». Этот код здесь:
if (!Character.isLetterOrDigit(source.charAt(i))) {
return "";
}
Для ваших нужд вы хотите немного изменить код, чтобы проверить, НЕ является ли символ буквой. Итак, просто измените вызов статического символьного объекта на использование метода isLetter() . Это будет выглядеть так:
if (!Character.isLetter(source.charAt(i))) {
return "";
}
Теперь все, что не является буквой, вернет пустую строку.
Ответ №2:
На самом деле я этого не делал, но проверьте Android NumberKeyListener. Вы можете найти исходный код для него здесь: http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/text/method/NumberKeyListener.java.htm
это делает прямо противоположное тому, что вам нужно, но это должно быть достаточно хорошей отправной точкой.