TextView省略号高度智能处理

4
有没有类似于 android:ellipsize 的东西(可以将超长的文本在 x 轴上用省略号表示),但是能够针对 y 轴上过长的文本进行处理?我有一个 TextView,由于特定需求,它必须保持固定高度,但其中的文本通常太长而无法全部显示,我希望在文本被截断前能够使其停止。

example cut off

我不想设置 android:maxLines 属性以支持多个屏幕尺寸。

我也考虑过使用......

int maxLines = (int) textView.getHeight() / textView.getLineHeight();
textView.setMaxLines(maxLines);

..., 但是这可能会引起问题,因为文本中的标记会导致单个行高比此高度更高或更短

编辑:我可以使用ScrollView在此处防止文字被切断,但我宁愿这是一个预览,下面有一个按钮供用户点击以查看整个文本。


1
TextView必须有一个固定的高度,但是您不想使用maxLines来支持多种屏幕大小?对我来说,这似乎是一个矛盾。个人而言,我会使用maxLines,并为不同的屏幕大小提供不同的布局/ maxLines值。 - Ken Wolf
我需要TextView与旁边的图像在网格中对齐,该图像将具有固定高度。我可以接受文本提前截断,但不希望它超过旁边的图像,因此TextView的高度是固定的。图像会不时更改,因此高度也会更改,硬编码的maxLines将不足以满足要求。 - yiati
嘿,yiati...你找到解决方案了吗? - deepak4bin
不完全正确。我为每个尺寸创建了自定义布局,并在它被自动截断之前手动设置了maxLines来停止它。这是Ken Wolf上面建议的解决方案,虽然仍然不能解决问题,但是是最好的解决方案。 - yiati
2个回答

0
你可以将TextView放在ScrollView内。
<ScrollView android:id="@+id/MyTextParent"
    android:layout_width="fill_parent"
    android:layout_height="100dp"
    android:scrollbars="vertical">

    <TextView android:id="@+id/MyText"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="TEXT"/>

</ScrollView>

这可能是一个可行的解决方案,但我想避免使用ScrollView,而是提供一个预览,并在下面提供一个链接,让用户查看完整文本。 - yiati

0
尝试手动设置省略号,使用setEllipsize(TextUtils.TruncateAt where),并定义您希望文本被截断的位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接