当前位置: 首页 > 知识库问答 >
问题:

超出了EditText最大字符数限制回调

能翔宇
2023-03-14

我的想法是在达到最大字符限制时,将错误设置为编辑文本。是否有关于此事件的回调,或者是否有其他方法可以实现此效果?提前谢谢。

共有3个答案

庄星汉
2023-03-14

我认为最好的解决方案是使用TextChangedListener并检查EditText测试的长度与您的限制。

和斌
2023-03-14

您可以使用编辑文本的设置错误:

editText.addTextChangedListener(new TextWatcher() {         
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
            if(s.length() > max)
                editText.setError("Error");
        }
    });
鞠嘉誉
2023-03-14

EditText中的maxLlong属性实际上是一个InputFilter,您可以自己编写并从html" target="_blank">代码中提供它。

您可以查看InputFilter的实现。LengthFilter,如果没有溢出,它基本上返回null。(参见http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/text/InputFilter.java#InputFilter.LengthFilter.filter(java.lang.CharSequence,int,int,android.text.span,int,int))

您可以创建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
                editText.setError("Overflow");
            }
            return res;
        }
    }
});
 类似资料:
  • 我正在开发一个Android应用程序,我想将输入过滤器设置为只允许EditText中包含21个字符。 我使用的XML代码片段如下 在活动中, 它不允许输入超过21个字符,但我无法告知用户长度不能超过21个字符,因为没有显示过滤器中的消息。 我尝试过使用,但它在第21个字符后没有被调用,因为我使用将限制设置为21。 任何人,请帮我找到解决办法。

  • 错误:超出GC开销限制(最大堆:1024MB) 当我从命令提示符进行gradle部署或其他gradle操作时,经常会出现上述错误。 谁能帮我解决这个问题。 项目:Java 建造:格拉德尔 *这与Gradle和Java有关。不仅仅是JAVA

  • 问题内容: 在应用程序的Java部分中创建EditText时,如何将其限制为与xml中一样的数字?例如: 设置像 问题答案: 大概是这样吗?

  • 问题内容: 我正在尝试建立一个包含2台服务器的Gridgain集群。 使用 GridDataLoader 将.csv文件中的数据(100万至5000万个数据)加载到Gridgain 。 从加载的数据中找到最小值,最大值,平均值等, 当在Eclipse中作为独立应用程序运行时,我得到正确的输出。 但是,在建立集群(eclipse环境中的2个服务器中的2个节点+我的Eclipse环境中的1个节点)的同

  • 问题内容: 我在一个程序中创建了这个错误,该程序创建了几个(数十万)HashMap对象,每个对象都有几个(15-20)文本条目。这些字符串必须全部收集(不分解成较小的数量),然后再提交给数据库。 根据Sun的说法,该错误发生“如果在垃圾回收上花费了太多时间:如果在垃圾回收上花费了总时间的98%以上,而回收不到2%的堆,则将引发OutOfMemoryError。 ”。 显然,可以使用命令行将参数传递

  • 我正在使用我岳父让我建立的一个网站作为学习React的借口。我不是一个天生的JavaScript开发人员(更喜欢后端),我知道我下面的代码中可能有一些递归元素,但我就是看不到。谁能告诉我我做错了什么?