android EditText maxLength не работает
Это мой xml
<EditText
android:id="@+id/et_comment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textNoSuggestions|textVisiblePassword"
android:hint="Provide comments here..."
android:gravity="top"
android:maxLength="5"
android:textSize="12sp"
android:visibility="visible"
/>
не работает, используя этот код
TextView editEntryView = new TextView(...);
InputFilter[] filterArray = new InputFilter[1];
filterArray[0] = new InputFilter.LengthFilter(5);
editEntryView.setFilters(filterArray);
maxLenth не работает, я не знаю, почему, но это не так.
Я проверил другие ответы в стеке, но они также не работают.
Проверьте, не конфликтуют ли какие-либо атрибуты EditText или в чем проблема?
EDIT: та же проблема стоит перед другими разработчиками
См. комментарии здесь такая же проблема сталкивается с манси и aat
И здесь в комментариях та же проблема стоит перед Винси и Райзером
EDIT: проблема решена
Я использовал входной фильтр, который переопределяет максимальную длину в xml, что делает его не способным работать.
Причина, по которой входной фильтр не работал для меня, заключалась в том, что я использовал другой входной фильтр, который перезаписывает предыдущий входной фильтр maxLength.
Создание его в один входной фильтр исправлена эта проблема для мне.
4 ответов
попробуйте это, он будет работать как для maxlenght, так и для входного фильтра
month.setFilters(new InputFilter[]{new InputFilterMinMax("0", "12"), new InputFilter.LengthFilter(2)});
Если у вас уже есть InputFilter, maxLength не будет работать. Вам нужно будет создать дополнительный InputFilter и добавить его:
// Filter for comma character
String blockCharacterSet = ",";
InputFilter filter = (source, start, end, dest, dstart, dend) -> {
if (source != null && blockCharacterSet.contains(("" + source))) {
return "";
}
return null;
};
// Filter for max Length
InputFilter filter1 = new InputFilter.LengthFilter(20);
// Set the filters
et_list_name.setFilters(new InputFilter[] { filter, filter1 });