自定义EditText动态控制输入的字符数量
来源:互联网 发布:酷听听书网络不给力 编辑:程序博客网 时间:2024/04/29 20:15
在开发中难免会遇到要控制字符数量的输入限制,比如用户的名字会让你输入10个字符(意思是英文可以输入10个但是汉字只可以输入5个),也许第一反应会在xml中设置EditText的长度,这种情况肯定是达不到我们的要求的。下面介绍一下自己的方法。
1.声明一个类继承InputFilter,实现filter中的方法,下面有详细的注解读者可以仔细看下
public class MyLenghtFilter implements InputFilter {
int nMax=0;int keep=0;public MyLenghtFilter(int nMax){this.nMax=nMax;}/** * 以下是个人的理解 */@Overridepublic CharSequence filter(CharSequence source, int start, int end,Spanned dest, int dstart, int dend){ //end是要输入的字符长度 dstart,dend默认再输入字符的时候二个长度是想等的 //在输入法中执行删除字符时 dstart显示的删除后的字符长度,dend显示的时删除前的字符长度try {keep = nMax - (dest.toString().getBytes("GBK").length - (dend - dstart));if(keep<= 0) {//此处判断已输入的字符长度是否大于等于最大长度 return "";}else if(keep >=source.toString().getBytes("GBK").length - start){//判断输入的字符长度要是小于最大长度则返回输入的字符return null;}else {return source.subSequence(start,(start + keep)/2);//要是输入的长度大于最大长度则截取前面的几个字符输出}}catch (UnsupportedEncodingException e) {e.printStackTrace();}return null;}}2.自定义EditText如下
public class MyEditText extends EditText {public MyEditText(Context context) {super(context);} public void setFileter(int maxLen){this.setFilters(new InputFilter[]{new MyLenghtFilter(maxLen)});}public MyEditText(Context context, AttributeSet attrs) {super(context, attrs);if(attrs!=null){TypedArray typedArray=context.obtainStyledAttributes(attrs,R.styleable.myEditInfo);setFileter(typedArray.getInt(R.styleable.myEditInfo_maxlen,100));typedArray.recycle();}}}
<resources> <declare-styleable name="myAutoInfo"> <attr name="au_background" format="reference"/> <attr name="focuseable" format="boolean"/> <attr name="textsize" format="dimension"></attr> </declare-styleable></resources>在这类中用了自定义属性方便在xml中设置要控制输入的长度。
要是读取还有更好的方法,欢迎留言告诉我。
0 0
- 自定义EditText动态控制输入的字符数量
- EditText之显示输入字符数量的输入框
- 检索输入字符的数量
- 校验输入框输入字符的数量
- 自定义TextWatcher:实现EditText输入字符限制
- 捕捉Edittext的 输入字符
- C#统计输入的字符类型数量
- Android实现限制EditText输入文字的数量
- Android实现限制EditText输入文字的数量
- 在EditText输入文本并实时改变文本的数量
- 转 Android实现限制EditText输入文字的数量
- Android 中自定义控件之判断还剩多少可输入字符的EditText
- android 动态控制EditText的可见性
- 限制EDITTEXT可输入的字符个数
- EditText 限制可输入的字符
- EditText特定字符的输入与校验
- 自定义程序实现Android EditText只允许输入指定字符
- Android之EditText只能输入数字或自定义字符
- python学习笔记(一) - 基础
- 冒泡排序[简单复杂度高O(N^2)]
- RTP视频传输播放延时(时间戳)
- 用户输入一个日期,计算时星期几,并计算时一年中的某一天,使用正则表达式判断
- SQL2008安装出现问题invoke---beginInvoke
- 自定义EditText动态控制输入的字符数量
- 如何在UltraEdit中使用正则表达式删除空格
- poj_2109
- 启动SQL Server服务失败,提示无法启动,请查看相关日志,解决方法
- FileUtils
- 客户端到服务器的单向通信
- JVM监控工具--几种常用工具简介
- unitils学习1一Unitils基础简介
- c语言笔记