android的TextView在设置ellipsize可能显示方框的问题
2013-02-04 20:31
1201 查看
如果在android中使用了自定义的字体,则可能会发现在设置了ellipsize之后在…之后(或之前)可能显示一个方框。
其实这个问题出现在这里——Layout.java中
请注意看,c = '\uFEFF',这是一个什么字符?在Unicode的定义中,这是一个宽度为0的空格。Android在替换…的时候,把被省略的字符全部变成了'\uFEFF'。如果你的字体不支持这个字符的显示,就会发现方框被显示出来了。
修复这个问题很简单,修改你的字体,把这个字符的宽度设置成0就好了。
其实这个问题出现在这里——Layout.java中
private void ellipsize(int start, int end, int line, char[] dest, int destoff, TextUtils.TruncateAt method) { int ellipsisCount = getEllipsisCount(line); if (ellipsisCount == 0) { return; } int ellipsisStart = getEllipsisStart(line); int linestart = getLineStart(line); for (int i = ellipsisStart; i < ellipsisStart + ellipsisCount; i++) { char c; if (i == ellipsisStart) { c = getEllipsisChar(method); // ellipsis } else { c = '\uFEFF'; // 0-width space } int a = i + linestart; if (a >= start && a < end) { dest[destoff + a - start] = c; } } }
请注意看,c = '\uFEFF',这是一个什么字符?在Unicode的定义中,这是一个宽度为0的空格。Android在替换…的时候,把被省略的字符全部变成了'\uFEFF'。如果你的字体不支持这个字符的显示,就会发现方框被显示出来了。
修复这个问题很简单,修改你的字体,把这个字符的宽度设置成0就好了。
相关文章推荐
- android TextView 显示不全的问题解决,此问题是设置了maxLines和ellipsize=end情况下发生的!
- textview中有很多行,我只让它显示三行,最后显示...,我设置了android:maxLines="3"和android:ellipsize="end",但出现的问题是只显示两行就显示“...”
- android 决TextView中MaxLines与ellipsize=end冲突问题
- android中给TextView设置属性ellipsize, 过长自动隐藏 或 跑马灯效果
- Android 中布局设置导致的TextView不显示的问题
- TextView设置ellipsize maxEms和singleLine 限制字符个数失效问题
- TextView限制最大行数,多出部分显示省略号,解决ellipsize = "end" 失效的问题
- TextView设置android:ellipsize=marquee不滚动
- TextView属性android:ellipsize实现跑马灯效果,TextView内容过长加省略号,点击显示全部内容
- android TextView ellipsize 只显示一个点 解决方案
- TextView:ellipsize设置了Marquee显示省略号
- TextView设置android:ellipsize="marquee"属性,无法实现跑马灯效果的解决方法
- android TextView多行文本(超过3行)使用ellipsize="end"属性无效问题的解决方法
- android webview设置缩放按钮时候无法显示问题
- android中的ellipsize设置(省略号的问题)
- Android 代码中动态设置字体大小-TextView.SetTextSize()
- Android设置TextView显示一行或多行
- TextView设置文本部分可点击时出现文本不显示的问题分析与解决
- android--设置TextView部分文字的颜色和背景(高亮显示)
- android--设置TextView部分文字的颜色和背景(高亮显示)