【问题标题】:android editText max limitandroid editText 最大限制
【发布时间】:2011-03-14 13:24:53
【问题描述】:

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

【问题讨论】:

    标签: android input filter android-edittext


    【解决方案1】:

    在 XML 本身中为 EditText 提供以下属性,

      android:maxLength="20"
    

    【讨论】:

    • 我的最大长度是可变的...它取决于一些变量,所以我必须从代​​码中设置它。
    • 然后试试这个 InputFilter[] FilterArray = new InputFilter[1]; FilterArray[0] = new InputFilter.LengthFilter(variable); editEntryView.setFilters(FilterArray);
    • 这就是我所做的,但是在达到最大限制后,当用户想要输入时我无法捕获事件
    【解决方案2】:

    我遇到了同样的问题,对 SO 的一些研究让我得到了这个解决方案。感谢@njzk2 的出色解决方案。将其发布在这里,以便其他人可以得到答案。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 2012-08-18
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多