Android如何在ellipsize结束时摆脱问号

时间:2011-04-26 18:01:53

标签: android user-interface 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"/>

正如预期的那样,如果文本太长而被“......”取代,则文本被截断。但在三点结束时出现一个被正方形包围的问号。

如何摆脱这个问号?

谢谢!

2 个答案:

答案 0 :(得分:35)

one of my books引用自己:

  

Android的TextView类具有“ellipsize”文本的内置功能,   截断它并在文本长于可用时添加省略号   空间。例如,您可以通过android:ellipsize属性使用此属性。   这种方法效果很好,至少对于单行文本而言。

     

Android使用的省略号不是三个句点。而是使用实际的   省略号字符,其中三个点包含在单个字形中。   因此,您使用的任何字体也使用“椭圆化”功能   需要省略号字形。

     

除此之外,Android还会填充以下内容呈现的字符串 -   屏幕,使得长度(以字符为单位)前后相同   “ellipsizing”。为了使这项工作,Android用一个字符替换一个字符   省略号,并用Unicode替换所有其他删除的字符   字符'ZERO WIDTH NO-BREAK SPACE'(U+FEFF)。这意味着   省略号后面的“额外”字符不会占用任何可见空间   屏幕,但它们可以成为字符串的一部分。

     

但是,这意味着您用于TextView小部件的任何自定义字体   与android:ellipsize一起使用时,也必须支持这种特殊的Unicode   字符。并非所有字体都可以,并且您将在屏幕上获得工件   如果您的字体缺少此字符,则表示缩短的字符串   (例如,流氓X出现在行尾)。

答案 1 :(得分:9)

有同样的问题。有FontForge知识的人修复了我的自定义字体中的U + FEFF,现在它们运行良好。以下是他如何描述他的所作所为:

“我对Fontforge并不擅长,所以我作弊。基本上,在Fontforge中打开字体,选择空格字符,ctrl + c进行复制,然后选择FEFF,ctrl + v进行粘贴。然后菜单Metrics-&gt ;设置宽度并设置为零。然后文件 - >生成字体。“