转载请注明出处:https://blog.csdn.net/mythmayor/article/details/101022086

一、TextView自带属性限制长度

我们知道,TextView有一个android:maxLength的属性,这个属性是用来限制可展示的字符数的,并不区分中英文,只限制数量。例如设置android:maxLength=“4”,字符串"mythmayor"将展示为"myth",字符串"驭霖骏泊36"将展示为"驭霖骏泊"。
TextView还有一个比较常用的属性:android:maxEms。该属性是用来限制文本长度的,计算的时候会区分中英文的占位,即如果设置android:maxEms=“4”,正常来讲能够展示4个中文字符或8个英文字符。配合android:ellipsize属性可以选择超出限制后不添加省略号、在文本前添加省略号,在文本中间添加省略号和在文本后添加省略号。但是使用android:maxEms经常会遇到一个问题就是,文本超出后展示的字符数可能会有一些变化,比如设置android:maxEms=“4”,可能中文字符会展示3-5个,英文字符会展示7-9个。还有就是如果android:ellipsize=“none”,即不设置省略号,超出部分的文本可能出现展示一半的情况。

二、自定义方法限制TextView展示长度

既然使用TextView自带的属性可能无法完全满足我们的需求,那么我们就要想其它的办法。另外一种很好的思路就是通过处理文本来达到展示固定长度的字符。下面直接上代码:
/**     * 处理文本,将文本位数限制为maxLen,中文两个字符,英文一个字符     *     * @param content 要处理的文本     * @param maxLen  限制文本字符数,中文两个字符,英文一个字符。例如:a啊b吧,则maxLen为6     * @return     */    public static String handleText(String content, int maxLen) {        if (TextUtils.isEmpty(content)) {            return content;        }        int count = 0;        int endIndex = 0;        for (int i = 0; i < content.length(); i++) {            char item = content.charAt(i);            if (item < 128) {                count = count + 1;            } else {                count = count + 2;            }            if (maxLen == count || (item >= 128 && maxLen + 1 == count)) {                endIndex = i;            }        }        if (count <= maxLen) {            return content;        } else {            //return content.substring(0, endIndex) + "...";//末尾添加省略号            return content.substring(0, endIndex + 1);//末尾不添加省略号        }    }
可以通过上面自定义的方法来限制TextView展示的长度及内容,区分中英文,中文占2位,英文占1位,这样通过TextView自带属性和自定义方法的限制基本就能满足所有的需求了。

更多相关文章

  1. android文本布局引擎
  2. android textview 中超出屏幕宽度的字符 省略号显示
  3. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值
  4. 处理固定宽度下的长字符串绘制(Android)
  5. Android EditText的输入监听,输入字符的动态获取
  6. Android 监听EditText文本输入 EditText监听事和输入事件
  7. Android Textview 超出最多字数省略号显示

随机推荐

  1. 搭建Android(安卓)NDK开发环境
  2. Android(安卓)电子罗盘--指南针(方向传感
  3. Mapbox Android学习笔记(1)简介
  4. android studio ndk 调试技巧
  5. Android(安卓)中 ListView Adapter getVi
  6. android XMl 解析神奇xstream 二: 把对象
  7. BroadcastReciver 广播接收者---DAY06 20
  8. imageButton被边框包围的原因、解决办法
  9. android webview 设置背景透明色
  10. Android移植到Asus P535步骤说明