Ограничить EditText только текстом (A-z) - PullRequest
2 голосов
/ 16 октября 2011

Я хочу изменить текст, который позволяет вводить текст только от A до z , без цифр и других символов.Я обнаружил, что должен использовать 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}); 

Ответы [ 2 ]

3 голосов
/ 16 октября 2011

Код, который вы разместили, добавляет пользовательский фильтр в поле EditText.Он проверяет, является ли введенный символ не числом или цифрой, а затем, если это так, возвращает пустую строку "".Этот код находится здесь:

if (!Character.isLetterOrDigit(source.charAt(i))) { 
                        return ""; 
} 

Для ваших нужд вы хотите немного изменить код, чтобы проверить, не является ли символ НЕ буквой.Итак, просто измените вызов статического объекта Character, чтобы использовать метод isLetter ().Это будет выглядеть так:

if (!Character.isLetter(source.charAt(i))) { 
                        return ""; 
} 

Теперь все, что не является буквой, будет возвращать пустую строку.

0 голосов
/ 16 октября 2011

На самом деле не сделал этого, но проверьте Android NumberKeyListener .Вы можете найти исходный код для этого здесь: http://www.java2s.com/Open-Source/Android/android-core/platform-frameworks-base/android/text/method/NumberKeyListener.java.htm

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...