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

znq*_*znq 122 java android textview

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

Nat*_*ate 266

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

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>
Run Code Online (Sandbox Code Playgroud)

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

  • 它仍然没有添加"......".对我来说,这个问题还没有完全回答!这个答案会将"short verylongword"改为"short"而不是"short verylon ..."最重要的是你们建议使用一个弃用的属性. (40认同)
  • 工作得很好,但是不推荐使用singleLine,所以你必须使用maxLines ="1".旁注,ellipsize也适用于多行! (7认同)
  • 不推荐使用singleLine.使用maxLines ="1".只是对旧答案的评论 (4认同)

Bon*_*ver 32

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

maxLines=1
ellipsize=end
scrollHorizontally=true
Run Code Online (Sandbox Code Playgroud)

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


xev*_*ser 5

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

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);
Run Code Online (Sandbox Code Playgroud)