Android: 如何在TextView中截断过长的多行文本

4
我有一个TextView,它的高度取决于先前的内容,但可能会有一个很长的文本。如何在正确的位置截断它,并将三个点或类似的东西连接到新的结尾?
目前它看起来像这样:Multiline text which is cut off 我找到了一些单行文本的解决方案,但多行文本该怎么办?我也不知道有多少行,因为这取决于屏幕大小。
在Android上还有其他典型的方法来显示可以扩展文本吗?例如最后一行的颜色渐变?
编辑:
当我没有固定高度时,我必须使高度依赖于上面的元素,我的XML将如下所示:
<TextView
   android:id="@+id/podcastShortDesc"
   android:text="Long text"
   android:layout_below="@+id/podcastTitle"
   android:layout_toRightOf="@+id/podcastLogo"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"

   android:maxLines="3"
   android:ellipsize="end"

   android:layout_above="@+id/podcastMoreAction" />

当我指定maxLines时,有时会成功: 我有运气了 但如果标题太长,则不起作用: 在这里输入图片描述

android:layout_height="50dip"固定高度会引起问题。将其更改为wrap_content。添加ellipsize:end和android:lines。 - Krupal Shah
我有一个固定的高度,想知道如何将过长的文本适应它并在正确的位置截断。 - Eknoes
@Eknoes,你解决了吗? - Jyoti JK
@JyotiJK 我真的记不清了,但我不认为是这样。 - Eknoes
1
@Eknoes 感谢您的回复,这确实是一个需要解决的好问题。 - Jyoti JK
3个回答

3
您应该在末尾添加以下代码以显示“三个点”。
android:ellipsize="end"

您应该移除固定高度属性。
android:layout_height="50dip"

相反,您应该添加行数。

android:maxLines="4"  
android:layout_height="wrap_content"  

Android会处理其他所有事情。这样,即使文本小于4行,Android也会自动处理大小。如果超过4行,它会添加“3个点” :) 指定固定高度可能会剪切您的文本。


1
谢谢!但不幸的是,我不知道maxLines,这取决于先前的内容。我刚刚更新了我的问题来解释这个问题。 - Eknoes

0

试试这个。希望它能够正常工作。

<TextView
android:id="@+id/podcastShortDesc"
android:text="LONG LONG LONG TEXT"
android:layout_width="match_parent"
android:layout_height="50dip"
android:maxHeight="50dp"
android:ellipsize="end"/>

我已经测试过50dp可以在正常字体大小下显示两行文本。因此,在50dp高度下,你应该添加maxLines 2。


问题是,我不知道有多少行 - 这将是不同的。因此,我不想指定最大行数。 - Eknoes
如果您不知道高度,应该添加maxHeight。如果添加了maxHeight,则会自动添加垂直滚动条。 - Masum
我刚刚更新了我的问题,也许现在更容易理解我的问题了。 - Eknoes

0
尝试修复layout_height并在您的textview中添加滚动条。
<TextView
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="50dip"
android:text="Hello......"
android:scrollbars="vertical"/>

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