无法在安卓设备上使用省略号。

10

我有一个TextView,如果超过它的可用宽度,我希望它能够自动省略。但是,除非输入字符串没有空格,否则这种方法无效... 有人可以提供一个有效的示例吗?我尝试了以下不同组合:

singleLine="true" maxLines="1" scrollHorizontally="false"

以上任何一种都没有效果。再次强调,如果我提供的字符串中没有空格,那么省略号会正确地出现。我错过了什么吗?我在1.5、1.6、2.0上都尝试过,问题都一样。

谢谢


一个快速而不太优雅的解决方案可能是使用非断空格来显示您的字符串,而不是常规空格。 - Paul McMillan
4个回答

12

Ellipsize(省略号)是有问题的(请前往投票报告bug,尤其是因为他们声称无法复制),因此你必须使用一种小技巧。使用:

android:inputType="text"
android:maxLines="1"

在任何您想要省略的内容上使用 ellipsize。同时不要使用 singleLine,因为它自从1.5版本以后就已经过时了。


1
@fiXedd:除了你的方法不起作用之外——根据你提供的链接和BGS的评论,对我有效的是第9条评论:尝试使用android:lines="1"和android:scrollHorizontally="true"而不是android:singleLine="true"。 - Richard Le Mesurier
对于TextView,android:ellipsize="end"android:maxLines="1"的组合非常有效! - Someone Somewhere
这样我就可以在textView上进行拼写检查了。但是这看起来很奇怪,而且会使我的大型列表视图变得缓慢。所以我别无选择,只能使用android:singleLine="true" - Roel

11

这是我在SDK ver4上能成功使用的唯一组合:

android:ellipsize="end"
android:singleLine="true"

(是的,我知道它说它已经被弃用了,但我没有选择)


2

请尝试以下操作:

textView.setSingleLine();
TruncateAt truncate = TruncateAt.END;
textView.setEllipsize(truncate);

0

简单的解决方案。

int limit = 9;
if (str.length() > limit) {
    textView.setText(str.substring(0, limit)+"...");
} else {
    textView.setText(str);
}

1
没有任何xml属性的组合对我起作用。为了节省时间并确保无论我选择哪个操作系统,我都知道会得到什么结果,我选择了这种方法。谢谢。 - Alfie Hanssen
这概括了Android开发的总体经验。 - menawi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接