Gab*_*eis 10 user-interface android textview
我已经定义了以下TextView:
<TextView
android:id="@+id/textview_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:layout_alignParentTop="true"
android:layout_marginRight="25dip"
android:ellipsize="end"/>
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,如果文本太长而被"......"取代,则文本被截断.但在三点结束时出现一个被正方形包围的问号.
我该如何摆脱这个问号呢?
谢谢!
Com*_*are 35
从我的一本书中引用自己:
Android的
TextView类具有内置的"椭圆化"文本功能,截断它并在文本长于可用空间时添加省略号.例如,您可以通过android:ellipsize属性使用此功能.这种方法效果很好,至少对于单行文本而言.Android使用的省略号不是三个句点.相反,它使用实际的省略号字符,其中三个点包含在单个字形中.因此,您使用的任何字体也使用"椭圆化"功能将需要省略号字形.
除此之外,Android会在屏幕上填充字符串,这样在"椭圆化"之前和之后的长度(以字符为单位)是相同的.为了使这项工作,Android用省略号替换一个字符,并用Unicode字符'ZERO WIDTH NO-BREAK SPACE'(
U+FEFF)替换所有其他删除的字符.这意味着省略号后面的"额外"字符不占用屏幕上的任何可见空间,但它们可以是字符串的一部分.但是,这意味着您用于
TextView小部件的任何自定义字体也android:ellipsize必须支持此特殊Unicode字符.并非所有字体都可以,如果您的字体缺少此字符,您将在缩短字符串的屏幕表示中获得工件(例如,流氓X出现在行尾).
有同样的问题.有FontForge知识的人修复了我的自定义字体中的U + FEFF,现在它们运行良好.以下是他如何描述他的所作所为:
"我对Fontforge并不擅长,所以我作弊.基本上,在Fontforge中打开字体,选择空格字符,ctrl + c进行复制,然后选择FEFF,ctrl + v进行粘贴.然后菜单Metrics-> Set Width and设置为零.然后File-> Generate Fonts."
| 归档时间: |
|
| 查看次数: |
3720 次 |
| 最近记录: |