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});

更多相关文章

  1. Android(安卓)Fresco图片处理库用法API英文原文文档1(Facebook开
  2. Android(安卓)如何批量改变字体颜色
  3. Android官方开发文档Training系列课程中文版:数据存储之键值对序
  4. Android(安卓)Log 及eclipse中文乱码
  5. Android中文件读写错误 open failed: ENOENT (No such file or d
  6. Android(安卓)中文 API (25) —— ZoomControls
  7. AndroidStudio,Colors.xml颜色表,配中文注释
  8. Android(安卓)5.0 MaterialDesigh资源整理
  9. Android中使用HttpURLConnection实现GET POST JSON数据与下载图

随机推荐

  1. 【Android】android图片轮播
  2. android模仿猪八戒网
  3. Android图片压缩
  4. Android签名文件生成
  5. 一、逆向环境配置和常用工具
  6. Android之BroadcastReceiver广播
  7. Android安装常见的一些解决方法
  8. Unity调用Android保存图片到相册
  9. android IntentService的深入理解
  10. Android 进程级别 和 oom_adj对应关系