Android ellipsize的小问题介绍
更新时间:2012年11月15日 17:30:18 作者:
使用TextView的时候,需要长度过长自动显示省略号,android里有原生的支持,本文将针对此问题进行深入剖析,需要的朋友可以参考
使用TextView的时候,需要长度过长自动显示省略号,android里有原生的支持,定义如下:
<TextView ...
android:ellipsize="end"
android:singleLine="true"/>
一看确实可以使用,但仔细观察,发现在省略号…的后面有一个方框,类似于出现乱码那种字符,这是为什么呢?
原来android里的ellipsize在处理字符串的时候,如果发现字符串超长,便会把最后一个字符替换为…,不是三个点,而是字体内置的省略号。不管用什么字体,都需要支持这个省略号才能正确显示。APP使用的字体是Mercedes,它支持省略号显示,这里没有问题。问题在于android在处理ellipsize的时候,把一个字符替换为…,把剩下截断的其他字符替换为Unicode的字符“ZERO WIDTH NO-BREAK SPACE” (U+FEFF),这个字符在屏幕上并不会显示出来,但它仍是字符串的一部分。
问题原来出在这里,使用的Mercedes字体不支持这个特殊字符U+FEFF的显示,所以才会出现乱码。解决的方法也很简单,编辑字体文件,把U+FEFF这个字符的宽度设为0。
复制代码 代码如下:
<TextView ...
android:ellipsize="end"
android:singleLine="true"/>
一看确实可以使用,但仔细观察,发现在省略号…的后面有一个方框,类似于出现乱码那种字符,这是为什么呢?
原来android里的ellipsize在处理字符串的时候,如果发现字符串超长,便会把最后一个字符替换为…,不是三个点,而是字体内置的省略号。不管用什么字体,都需要支持这个省略号才能正确显示。APP使用的字体是Mercedes,它支持省略号显示,这里没有问题。问题在于android在处理ellipsize的时候,把一个字符替换为…,把剩下截断的其他字符替换为Unicode的字符“ZERO WIDTH NO-BREAK SPACE” (U+FEFF),这个字符在屏幕上并不会显示出来,但它仍是字符串的一部分。
问题原来出在这里,使用的Mercedes字体不支持这个特殊字符U+FEFF的显示,所以才会出现乱码。解决的方法也很简单,编辑字体文件,把U+FEFF这个字符的宽度设为0。
相关文章
Android自定义viewgroup 使用adapter适配数据(6)
这篇文章主要为大家详细介绍了Android自定义viewgroup,使用adapter适配数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2016-12-12
Android使用GPS获取用户地理位置并监听位置变化的方法
这篇文章主要介绍了Android使用GPS获取用户地理位置并监听位置变化的方法,实例分析了Android编程中GPS定位的实现与使用技巧,需要的朋友可以参考下2015-12-12
Android实现疯狂连连看游戏之加载界面图片和实现游戏Activity(四)
这篇文章主要为大家详细介绍了Android实现疯狂连连看游戏之加载界面图片和实现游戏Activity,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-03-03
Android 桌面Widget开发要点解析(时间日期Widget)
总的来说,widget主要功能就是显示一些信息。我们今天编写一个很简单的作为widget,显示时间、日期、星期几等信息。需要显示时间信息,那就需要实时更新,一秒或者一分钟更新一次2013-07-07
详解Android TabHost的多种实现方法 附源码下载
这篇文章主要为大家详细介绍了Android TabHost的多种实现方法 文章中针对每一种实现方法都附有源码进行下载,感兴趣的小伙伴们可以参考一下2016-05-05


最新评论