Ограничить редактируемый текст только текстом (A-z)

#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

это делает прямо противоположное тому, что вам нужно, но это должно быть достаточно хорошей отправной точкой.