EditText 最大字符数限制

EditText 经常会有限制输入字符长度的需求,限制输入长度的方法有三种:

1. 在XML 文件中设置

android:maxLength="50"

2. 通过InputFilter

EditText editText = (EditText)findViewById(R.id.edit);
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});

实际上在XML 中设置,最后也是通过设置InputFilter 实现的。LengthFilter 只是实现了字符串长度的限制,如果我们想要其他限制,比如根据字符串的字节数等,可以自己实现InputFilter 接口来实现相应功能。

3. 为EditText设置 TextWatcher 监听

我们可以自定义一个类,实现TextWatcher 接口,监听EditText 的文本变化,手动对输入文本进行截断,例如下面(注:示例代码,未经过严密测试):

EditText editText = findViewById(R.id.edit); 
editText.addTextChangedListener(new MyTextWatcher(editText, 10));

private class MyTextWatcher implements TextWatcher { 
        private EditText editText; 
        private int maxCount; 
 
        MyTextWatcher(EditText editText, int maxCount) { 
            this.editText = editText; 
            this.maxCount = maxCount; 
        } 
 
        @Override 
        public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
 
        } 
 
        @Override 
        public void onTextChanged(CharSequence s, int start, int before, int count) { 
 
        } 
 
        @Override 
        public void afterTextChanged(Editable s) { 
 
            if (s.length() > maxCount) { 
                editText.setText(s.subSequence(0, maxCount)); 
                Selection.setSelection(editText.getText(), maxCount); 
            } 
        } 
    }

上面代码也可实现输入长度限制。

总结:

如果是一种固定要求的输入框,可以直接在XML 中写,如果想要动态控制,甚至实现更多的控制功能,建议使用InputFilter 或 TextWatcher,如果只是为了限制输入建议使用InputFilter。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 引言 EditTex是Android中比较常用的一个控件,可以说它是用户和Android应用进行数据传递的通道.通...
    OzanShareing阅读 11,560评论 5 33
  • 设置单行,多行,自动换行,文字间距参考TextView 在EditText设置单行,由于android:singl...
    大灰狼zz阅读 4,944评论 0 0
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,888评论 0 17
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,890评论 1 32
  • 这篇文章分享我的 Android 开发(入门)课程 的第九个实战项目:习惯记录应用。这个项目托管在我的 GitHu...
    HsuJin阅读 3,931评论 0 11

友情链接更多精彩内容