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