Android:比android更好:ellipsize =“end”将截断长字符串添加“...”?

时间:2010-09-22 12:19:01

标签: android string layout truncate android-layout

This property制作

  

“简短且非常长词”

  

“短而且”

。但是我希望有所了解。喜欢

  

“短而且非常......”

现在我在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属性时出现错误)...

alt text

这是摩托罗拉Milestone与Android 2.1更新1的截图。在HTC Desire上使用相同的Android版本也是如此

更新3

现在我使用android:ellipsize =“marquee”。这似乎是唯一正常工作的环境。只有集中注意力时它才会移动。我也在许多其他应用程序中看到它。我猜它是常见的做法。

4 个答案:

答案 0 :(得分:65)

如果是单行试试这个:

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

它对我有用。

答案 1 :(得分:24)

我遇到了类似的问题,并将此属性设置为TextView帮助:

android:singleLine="true"

另外,我使用的是RelativeLayout,所以我通过将左边距设置为TextView右侧的按钮来限制TextView可以占用的空间,这样文本就无法进一步扩展并被迫截断其内容。 / p>

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

答案 2 :(得分:1)

也许您可以查看操作系统使用的private Ellipsizer class如何工作并为您的应用修改它?

编辑:这是一个有用的链接 - http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/java/android/text/Layout.java#1830

答案 3 :(得分:1)

查看我的更新3.解决方法是使用“marquee”。我此时已经看过很多应用程序。 现在,随着Android的新版本,此功能很可能已修复,并将按预期工作。 (我猜)