Android:比android更好:ellipsize =“end”添加“…”截断长string?

这个属性使得

“短而长的词”

“短”和“

。 但是我想要平静下来。 喜欢

“短而长…”

现在我截断Java代码中的string。 但是,那是基于字符的数量而不是链接的实际长度。 所以,结果不是很好。

String title; if(model.getOrganization().length() > 19) { title = model.getText().substring(0, 15).trim() + "…"; } else { title = model.getText(); } ((TextView) findViewById(R.id.TextViewTitle)).setText(title); 

更新

刚注意到,这个属性实际上在几个例子中增加了“…”。 但是并不是全部都是这样:

12345678901234567890变成“12345678901234 …”

然而,

“1234567890 1234567890”变成“1234567890”而不是“1234567890 123 …”

更新2

现在它真的变得时髦了! 我只是设置singleLine = true,并删除maxLine(错误出现与没有设置ellipsize属性)…

替代文字

这是从摩托罗拉里程碑与Android 2.1更新1的截图。相同的HTC Desire上发生相同的Android版本

更新3

现在我使用android:ellipsize =“marquee”。 这似乎是唯一适当的工作环境。 聚焦时也只是在移动。 我也在其他许多应用程序中看到它。 我猜它是普遍的做法。

如果是单行的话,试试这个:

 android:ellipsize="end" android:maxLines="1" android:scrollHorizontally="true" android:singleLine="true" 

它为我工作。

我有一个类似的问题,并设置此属性的TextView帮助:

 android:singleLine="true" 

此外,我使用的是一个RelativeLayout,所以我限制了TextView可以通过设置左边距到TextView右边的button的空间,以便文本不能进一步扩展,并被迫截断其内容。

也许这不是解决你的问题,但它也帮助我在类似的情况。

看到我的更新3.解决方法是使用“字幕”。 我看到很多应用程序在这个时候这样做。 现在,随着Android的新版本,这个function很可能会被修复,并将按预期工作。 (我猜)

也许你可以看看操作系统使用的私有Ellipsizer类是如何工作的,并为你的应用程序修改它?

编辑:这是一个工作链接 – http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/java/android/text/Layout.java#1830