您的位置:首页 > 移动开发 > Android开发

android的TextView在设置ellipsize可能显示方框的问题

2013-02-04 20:31 1201 查看
如果在android中使用了自定义的字体,则可能会发现在设置了ellipsize之后在…之后(或之前)可能显示一个方框。

其实这个问题出现在这里——Layout.java中
private void ellipsize(int start, int end, int line,
char[] dest, int destoff, TextUtils.TruncateAt method) {
int ellipsisCount = getEllipsisCount(line);

if (ellipsisCount == 0) {
return;
}

int ellipsisStart = getEllipsisStart(line);
int linestart = getLineStart(line);

for (int i = ellipsisStart; i < ellipsisStart + ellipsisCount; i++) {
char c;

if (i == ellipsisStart) {
c = getEllipsisChar(method); // ellipsis
} else {
c = '\uFEFF'; // 0-width space
}

int a = i + linestart;

if (a >= start && a < end) {
dest[destoff + a - start] = c;
}
}
}


请注意看,c = '\uFEFF',这是一个什么字符?在Unicode的定义中,这是一个宽度为0的空格。Android在替换…的时候,把被省略的字符全部变成了'\uFEFF'。如果你的字体不支持这个字符的显示,就会发现方框被显示出来了。

修复这个问题很简单,修改你的字体,把这个字符的宽度设置成0就好了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐