android editText最大限制

android editText最大限制,android,input,filter,android-edittext,Android,Input,Filter,Android Edittext,在我使用InputFilter.LengthFilter设置editText的最大字符限制后,是否有办法使editText在达到最大字符数后对ContextChanged作出反应?如果没有,是否有一种简单的方法来设置editText的最大字符数,并且仍然在ContextChanged事件中做出反应?感谢XML本身的EditText提供以下属性 android:maxLength="20" 谢谢。我也遇到了同样的问题,通过一些研究,我得到了这个解决方案。感谢@njzk2提供了出色的解决方案。

在我使用InputFilter.LengthFilter设置editText的最大字符限制后,是否有办法使editText在达到最大字符数后对ContextChanged作出反应?如果没有,是否有一种简单的方法来设置editText的最大字符数,并且仍然在ContextChanged事件中做出反应?感谢XML本身的EditText提供以下属性

  android:maxLength="20"

谢谢。

我也遇到了同样的问题,通过一些研究,我得到了这个解决方案。感谢@njzk2提供了出色的解决方案。将其张贴在此处,以便其他人可以获得答案

EditText
中的
maxLength
属性实际上是一个
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;
        }
    }
});

我的最大长度是可变的。。。它取决于一些变量,所以我必须从代码中设置它;FilterArray[0]=新的InputFilter.LengthFilter(变量);setFilters(FilterArray);这就是我所做的,但在达到最大限制后,我无法在用户想要键入时取消事件