使用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。

更多相关文章

  1. 分支和循环(二)(零基础学习C语言)
  2. Android中使用GSON包解析JSON数据(复杂JSON)
  3. 【String.xml】修改Android中strings.xml文件, 动态改变数据
  4. Android使用JNI实现Java与C之间传递数据 .
  5. android超简单短信接收――中级编
  6. 老生常谈之Android里的dp和sp
  7. Android中动态修改string.xml中字符串的内容
  8. Android(安卓)开发中发送http请求
  9. Android(安卓)TextView

随机推荐

  1. XmlSlurper解析RSS的实例代码
  2. C#中通过xpath查找xml的指定元素的代码实
  3. php读取XML的四种方法实例详解
  4. 用C#实现XML和实体类之间序列化和反序列
  5. Android旋转动画xml配置的代码展示
  6. c#中xml操作类的代码详解
  7. Android伸缩动画xml配置的代码展示
  8. android读取xml的代码实例
  9. Android平移动画xml配置代码展示
  10. java DOMParser 解析xml的实例详解