android editText最大限制

时间:2011-03-14 13:24:54

标签: android input filter android-edittext

在使用InputFilter.LengthFilter设置editText的最大字符限制后,有没有办法让editText在onTextChanged达到最大字符数后做出反应?如果没有,是否有一种简单的方法可以将最大字符数设置为editText并仍然对onTextChanged事件做出反应?感谢

2 个答案:

答案 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;
        }
    }
});