在使用InputFilter.LengthFilter设置editText的最大字符限制后,有没有办法让editText在onTextChanged达到最大字符数后做出反应?如果没有,是否有一种简单的方法可以将最大字符数设置为editText并仍然对onTextChanged事件做出反应?感谢
答案 0 :(得分:12)
在EditText的XML本身中,给出以下Attrib,
android:maxLength="20"
感谢。
答案 1 :(得分:0)
我正在经历同样的问题,一些关于SO的研究让我得到了这个解决方案。感谢@ njzk2的出色解决方案。在此发布,以便其他人可以得到答案。
maxLength
中的 EditText
属性实际上是InputFilter
,您可以自己编写并从代码中提供。
您可以查看InputFilter.LengthFilter的实现,如果没有溢出,它基本上会返回null
。 (见link)
稍加修改:创建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;
}
}
});