У меня была эта проблема, и я считаю, что мы упускаем хорошо объясненный способ сделать это программно, не теряя уже установленные фильтры.
Установка длины в XML:
Поскольку принятый ответ гласит правильно, если вы хотите определить фиксированную длину для EditText, который не будет изменяться в будущем, просто определите в XML-файле EditText:
android:maxLength="10"
Установка длины программно
Чтобы установить длину программно, вам нужно установить InputFilter
.
Проблема для Java : после установки все остальные фильтры исчезают (например, maxLines, inputType и т. Д.).Чтобы не потерять предыдущие фильтры, вам нужно получить эти предыдущие примененные фильтры, добавьте maxLength и установите фильтры обратно в EditText следующим образом:
InputFilter[] editFilters = editText.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = new InputFilter.LengthFilter(10); //the desired length
editText.setFilters(newFilters);
Kotlin однако это упростиловсем, вам также нужно добавить фильтр к уже существующим, но вы можете достичь этого с помощью простого:
editText.filters += InputFilter.LengthFilter(maxLength)