在 TextView 和 EditText 中,可使用 ellipsize 属性来设置文字溢出隐藏,如:“一段很长的文本…”

一、在xml中

  • android:ellipsize = "end" 省略号在结尾
  • android:ellipsize = "start" 省略号在开头
  • android:ellipsize = "middle" 省略号在中间
  • android:ellipsize = "marquee" 跑马灯
  • 最好加一个约束 android:singleline = "true" 或者 android:maxLines="1"

二、代码中

  • tv.setEllipsize(TextUtils.TruncateAt.valueOf("END"));
  • tv.setEllipsize(TextUtils.TruncateAt.valueOf("START"));
  • tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE"));
  • tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));
  • 最好再加一个约束 tv.setSingleLine(true);

注:EditText 中不支持 marquee 模式!

对于多行的时候,比如4行,想设置溢出隐藏,可是发现只最多只能显示两行,不知是否 Android 的 bug。

1
2
3
4
5
<TextView
android:maxLines="4"
android:ellipsize="end"
......
/>