android EditText 限定中文个数与英文个数的解决方案
16lz
2021-01-26
EditText限定中文8个英文16个的解决方法。
在EditText上控件提供的属性中有限定最大最小长度的方法。但是,对于输入时,限定中文8个英文16个时,怎么办?相当于一个中文的长度是两个英文的长度。
原理就不说了。自己看一下android的源码。
以上直接上代码。
private final int maxLen = 16;private InputFilter filter = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) { int dindex = 0; int count = 0; while (count <= maxLen && dindex < dest.length()) { char c = dest.charAt(dindex++); if (c < 128) { count = count + 1; } else { count = count + 2; } } if (count > maxLen) { return dest.subSequence(0, dindex - 1); } int sindex = 0; while (count <= maxLen && sindex < source.length()) { char c = source.charAt(sindex++); if (c < 128) { count = count + 1; } else { count = count + 2; } } if (count > maxLen) { sindex--; } return source.subSequence(0, sindex); }};
使用如下:
editText.setFilters(new InputFilter[]{filter});
更多相关文章
- Android(安卓)Fresco图片处理库用法API英文原文文档1(Facebook开
- Android(安卓)如何批量改变字体颜色
- Android官方开发文档Training系列课程中文版:数据存储之键值对序
- Android(安卓)Log 及eclipse中文乱码
- Android中文件读写错误 open failed: ENOENT (No such file or d
- Android(安卓)中文 API (25) —— ZoomControls
- AndroidStudio,Colors.xml颜色表,配中文注释
- Android(安卓)5.0 MaterialDesigh资源整理
- Android中使用HttpURLConnection实现GET POST JSON数据与下载图