如何在android中的textview中包装文本

有没有人知道如何在Android平台的TextView中包装文字。 即如果textview中的文本超过了屏幕的长度,它应该显示在第二行。

我已经search并尝试以下内容:

android:scrollHorizontally="false", android:inputType="textMultiLine", android:singleLine="false" 

但没有工作..

任何人都可以build议如何做到这一点..我相对较新的Android平台..

对于我来说,这个问题只发生在Android <4.0上

我使用的参数组合是:

 android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false" 

maxLines计数似乎是使我的TextView包装随机最后一块。

对于TextViewTableLayout ,解决方法是在TableLayout上设置android:shrinkColumns="1" 。 (用你要换行的TextView的列号replace1 (0索引))

AFAICT,在TextView上不需要其他属性。

对于其他情况,请参阅这里的其他答案。

FWIW,我最初得到它的工作

  <TextView android:id="@+id/inventory_text" android:layout_width="fill_parent" android:layout_weight="1" android:width="0dp" 

但是在对话框的底部产生了一些额外的空白空间。

您必须使用2个参数:

  • android:ellipsize="none" :在textview宽度上文字不被剪切

  • android:scrollHorizontally="false"文本将根据需要包装多行

好吧,真相是在中间的某个地方,因为你必须从父母的观点和孩子的angular度来看问题。 下面的解决scheme只适用于微调模式= dialog无论Android版本(没有问题..testing它在VD和DesireS与Android => 2.2):

  1. 设置你的微调(父)模式,如:

     android:spinnerMode="dialog" 
  2. 将textview的(子自定义视图)属性设置为:

     android:layout_weight="1" android:ellipsize="none" android:maxLines="100" android:scrollHorizontally="false" 

我希望这也适用于你。

这应该解决您的问题: android:layout_weight="1"

在“inputType”属性下的Adnroid Studio 2.2.3中,有一个名为“textMultiLine”的属性。 select这个选项为我解决了一个类似的问题。 我希望有帮助。

约束布局

 <TextView android:id="@+id/some_textview" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintLeft_toLeftOf="@id/textview_above" app:layout_constraintRight_toLeftOf="@id/button_to_right"/> 
  • 确保您的布局宽度为零
  • 左/右限制被定义
  • wrap_content的布局高度允许向上/向下扩展。
  • 设置android:maxLines="2"来防止垂直扩展(2只是一个android:maxLines="2"
  • 省略是概率。 最大线条的一个好主意android:ellipsize="end"

0dp宽度允许左/右限制来确定你的Widget的宽度。

设置左/右约束设置您的小部件的实际宽度,在其中您的文本将包装。

约束布局文档

通过将android:maxEmsandroid:layout_weight="1"一起设置为给定值,将导致TextView在达到给定的ems长度时进行包装。

你需要在ScrollView中添加你的TextView,像这样:

 <ScrollView android:id="@+id/SCROLL_VIEW" android:layout_height="150px" android:layout_width="fill_parent"> <TextView android:id="@+id/TEXT_VIEW" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header" /> </ScrollView> 

我正在使用Android 2.2,如果超过屏幕,我的文本视图会自动转到下一行。

如果您希望在屏幕结束之前将文本转到下一行,只需添加(只需input您自己的dp值)即可。 如果您在文本的右侧有图片,这将是有用的。

 android:layout_marginRight="52dp" 

奇怪 – 我在Code中创build了我的TextView,并且包装了 – 尽pipe我没有设置除标准的东西之外的任何东西 – 但是请亲自看看:

 LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); childParams.setMargins(5, 5, 5, 5); Label label = new Label(this); label.setText("This is a testing label This is a testing label This is a testing label This is a testing labelThis is a testing label This is a testing label"); label.setLayoutParams(childParams); 

从params定义中可以看到,我使用的是LinearLayout。 类标签只是简单地扩展了TextView,除了设置字体大小和字体颜色之外,没有做任何事情。

在模拟器(API等级9)中运行它时,会自动将文本包装成3行。

尝试@ Guykun的方法,并确保父母的宽度没有设置为包装内容。 这是我错过的东西。

我有同样的问题。 以下改变使其工作 –

 android:layout_width="wrap_content" 

省略号,maxLines或layout_weight – 都没有任何区别。 注 – 父宽度也被设置为wrap_content。

我知道已经晚了,但可能会帮助其他人。 只需将宽度设置为0dp

  <TextView android:layout_width="0dp" .../> 

其实很简单 只要写上:+“\ n”,无论你想要一个wordwrap