- 在 Android 开发,TextView 内容超过宽度时,默认不会换行,如下例
xml
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="这是一段很长的文本,这是一段很长的文本,这是一段很长的文本" />

处理策略
- 使用 singleLine 属性,虽然已废弃,但有效
xml
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="这是一段很长的文本,这是一段很长的文本,这是一段很长的文本" />
# singleLine 属性已废弃
@deprecated This attribute is deprecated.
Use maxLines instead to change the layout of a static text,
and use the textMultiLine flag in the inputType attribute instead for editable text views
(if both singleLine and inputType are supplied,
the inputType flags will override the value of singleLine).

- 使用 maxLines 属性
xml
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="这是一段很长的文本,这是一段很长的文本,这是一段很长的文本" />

- 使用 maxLines 属性结合 ellipsize 属性添加省略号
xml
<TextView
android:layout_width="200dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:text="这是一段很长的文本,这是一段很长的文本,这是一段很长的文本" />

- ellipsize 属性的属性值如下
| 属性值 | 说明 |
|---|---|
| end | 在结尾显示省略号 |
| start | 在开头显示省略号 |
| middle | 在中间显示省略号 |
- 使用跑马灯效果
xml
<TextView
android:id="@+id/tv_test"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:singleLine="true"
android:text="这是一段很长的文本,这是一段很长的文本,这是一段很长的文本" />
java
TextView tvTest = findViewById(R.id.tv_test);
tvTest.setSelected(true);