Android Studio XML中TextView设置ellipsize=end末尾省略号不生效问题
问题原因
仅配置android:ellipsize="end"但未限制TextView的显示行数时,系统无法判断何时需要截断文本添加省略号,就会出现文本直接溢出控件范围的问题。演员表区域功能正常是因为对应TextView默认限制了单行或者配置了最大行数属性。
解决方案
按如下规则修改XML配置即可生效:
- 必须给当前TextView添加
android:maxLines属性,指定最多允许显示的行数,比如希望最多显示4行就设置为android:maxLines="4";如果希望自动适配控件高度、在控件高度占满时再截断,可设置android:maxLines="100"(设置一个远大于实际能显示的行数即可)。 - 补充配置
android:scrollHorizontally="false",同时确认没有给该TextView设置android:inputType属性,inputType属性会导致ellipsize失效。 - 检查业务代码中是否给该TextView设置了
setMovementMethod(),如果配置了长按复制等功能也会导致ellipsize失效,非必要可以移除。
修改后的参考代码如下:
<TextView android:id="@+id/movie_overview_text" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginStart="8dp" android:layout_marginTop="24dp" android:layout_marginEnd="8dp" android:textStyle="bold" android:ellipsize="end" android:maxLines="4" android:scrollHorizontally="false" app:layout_constraintBottom_toBottomOf="@id/movie_overview_image" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/movie_overview_image" app:layout_constraintTop_toTopOf="@id/movie_overview_image" />
内容的提问来源于stack exchange,提问作者Dragos Ciupe
相关产品推荐
相关产品推荐

