我已经定义了以下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"/>
和预期的一样,如果文本太长,就会被截断并用"…"代替。但是在这三个点的末尾出现了一个被正方形包围的问号。
如何去掉这个问号?
谢谢!
引用我自己的一本书:
Android的
TextView
类具有"椭圆化"文本的内置功能,如果文本比可用文本长,则截断它并添加省略号空间。例如,您可以通过android:ellipsize
属性使用它。至少对于单行文本来说,这工作得相当好。Android使用的省略号不是三个句号。而是用实际的省略号字符,其中三个点包含在一个字形中。因此,您使用的任何字体,您也使用"省略号"特性将需要省略号符号
除此之外,Android会填充在-上呈现的字符串屏幕,使长度(以字符为单位)前后相同"ellipsizing"。为了实现这个功能,Android将其中一个字符替换为省略,并用Unicode替换所有其他被删除的字符字符'零宽度不间断空格' (
U+FEFF
)。这意味着省略号后面的"额外"字符不会占用任何可见的空间屏幕,但它们可以是字符串的一部分。然而,这意味着您为
TextView
小部件使用的任何自定义字体都可以与android:ellipsize
一起使用的Unicode也必须支持这种特殊的Unicode的性格。并不是所有字体都这样,你会在屏幕上看到伪影如果您的字体缺少此字符,则表示您的缩短字符串(例如,流氓X出现在行尾)。
有同样的问题。有FontForge知识的人在我的自定义字体中固定了U+FEFF,现在它们工作得很好。以下是他对他所做的描述:
"我不擅长Fontforge,所以我作弊了。基本上,在Fontforge中打开字体,选择空格字符,ctrl+c复制,然后选择FEFF, ctrl+v粘贴。然后菜单度量->设置宽度并设置为零。然后文件->生成字体。"