Android:TextView自动截断并替换String的最后3个字符

时间:2009-11-03 11:26:04

标签: java android textview

如果String长于TextView的宽度,它会自动换行到下一行。我可以使用android:singleLine(已弃用)或设置android:inputType="text"来避免这种情况。我现在需要的是将String的最后3个字符替换为“ ... ”。由于我没有使用等宽字体,因此根据String中使用的字母,这将始终不同。所以我想知道在TextView中获取字符串的最后3个字符的最佳方法是什么,并替换它们。也许已经在Android框架中实现了一些东西,因为这必然是一个常见的问题。

3 个答案:

答案 0 :(得分:254)

您应该能够使用文本视图的“ellipsize”属性:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

您可能还需要将重力值应用于布局;我有时会看到没有它们的“自动拉伸”视图。

答案 1 :(得分:32)

为这个问题找到了一个有趣的工作。

maxLines=1
ellipsize=end
scrollHorizontally=true

诀窍是关于水平滚动的最后声明....检查出来。它至少适用于v2.2。

答案 2 :(得分:3)

以编程方式,您可以使用:

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);