android editText max limit - PullRequest
       29

android editText max limit

5 голосов
/ 14 марта 2011

после того, как я установил максимальный лимит символов для editText, используя InputFilter.LengthFilter, есть ли способ заставить editText реагировать на onTextChanged после того, как он достигает максимального количества символов? если нет, есть ли простой способ установить максимальное количество символов для editText и по-прежнему реагировать на событие onTextChanged? Спасибо

Ответы [ 2 ]

12 голосов
/ 14 марта 2011

В самом XML для EditText укажите следующий атрибут:

  android:maxLength="20"

Спасибо.

0 голосов
/ 21 марта 2017

Я столкнулся с той же проблемой, и некоторые исследования SO дали мне это решение.Спасибо @ njzk2 за блестящее решение.Разместите его здесь, чтобы другие могли получить ответ.

maxLength атрибут в EditText на самом деле InputFilter, который вы можете написать самостоятельно и получить из кода.

Вы можетепосмотрите на реализацию InputFilter.LengthFilter, которая в основном возвращает null, если переполнения нет.(см. ссылка )

С небольшой модификацией этого: создайте расширение для InputFilter.LengthFilter, в котором вы вызываете super, и сравните его с null, чтобы решить, нужно ли вамотобразить предупреждение.

editText.setInputFilters(new InputFilter[] {
    new InputFilter.LengthFilter(max) {
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
            CharSequence res = super.filter(source, start, end, dest, dstart, dend);
            if (res != null) { // Overflow
                   Toast.makeText(this,"OVERFLOW!",Toast.LENGTH_SHORT).show();

            }
            return res;
        }
    }
});
...