Во-первых, я должен сказать, что читал подобные вопросы и ответы здесь, на SO, и этот вопрос в основном является дубликатом этот вопрос и многие другие, но ответы на эти вопросы не работают так, как я хочу.
Проблема:
Настройка фильтра длины в моем EditText программно выглядит следующим образом:
editText.setFilters(new InputFilter[]{new LengthFilter(10)} );
Единственное, что он делает, это скрывает текст, превышающий лимит в EditText. Он по-прежнему показывает длинный (неограниченный) текст в окне предложений, и мне приходится удалять (возврат) для каждой буквы, которая проходит, прежде чем я смогу удалить то, что показано в EditText.
Предлагаемые решения:
Установка InputType на
textFilter
.
Программно я сделал это:editText.setInputType( InputType.TYPE_TEXT_VARIATION_FILTER );
Он скрывает предложения, но неограниченный текст все еще присутствует, и мне все еще приходится использовать клавишу Backspace, чтобы удалить буквы, которых не должно быть.
Установка InputType на
textNoSuggestions|textVisiblePassword
.
Программно я сделал это (пришлось добавитьTYPE_CLASS_TEXT
, иначе это не сработало бы):editText.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD );
Этот работает, но проблема в том, что он останавливает «жестовый ввод» и меняет шрифт на моноширинный.
Лучшие решения?
Как видите, эти два метода на самом деле работают не без дополнительных проблем. Есть ли другой способ сделать это, который я пропустил. Должен ли я просто использовать TextWatcher
, если я хочу продолжать печатать жестами и предложения?