如何根据字符串的大小自动调整TextView的高度?

8
我想知道如何根据字符串的长度自动调整TextView的大小。我从另一个Intent中获取了一些数据作为字符串,并将其存储在TextView中。如果我把它留得很小,整个文本就会无法适应,只有一半显示出来。如果我为TextView留下大空间,它在屏幕上看起来不好看。
我在网上找到的解决方案是使用"extends TextView"方法,在我的类中使用此方法会出现错误,并且我必须更改许多函数。

你为什么要根据长度调整高度 - natario
2个回答

12

使用多行TextView,将layout_height设置为wrap_content

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:singleLine="false"/>
注意:如果将layout_width设置为wrap_content,它将无法正常工作。如果您不希望TextView占用父视图的整个宽度,则可以采取以下措施之一:
  • 在XML中将其设置为固定宽度,或
  • 以编程方式设置宽度,或
  • RelativeLayout中设置layout_alignLeft/layout_alignRight等,或
  • LinearLayout中将layout_width设置为0dp并使用layout_weight

你好,能否解释一下为什么将layout_width设置为wrap_content时它不能正常工作? - katie
@katie 如果你这样做,那么宽度将设置为字符串的长度,没有换行,它只是延伸到右侧。它需要给定一个不等于总长度的宽度,以知道在哪里换行到下一行。至于为什么它不能根据父视图的宽度智能地换行,我不知道,这是Android布局系统的实现细节。 - samgak

5
如果您正在使用XML文件,只需执行以下操作:
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="false"/>

如果您想要像这样动态地进行操作,可以按照以下步骤:
TextView textView= new TextView(activity);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(param);

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