我在xml
<TableRow>
<TextView android:id="@+id/address1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:maxLines="4"
android:singleLine="false"
android:text="Johar Mor, Gulistan-e-Johar, Karachi" >
</TextView>
</TableRow>
它不适用于multiline
,而我正在使用TableLayout
...
所以我在这里做错了什么?
答案 0 :(得分:183)
如果您放入TextView
的文字很短,则不会自动扩展为四行。如果您希望TextView
始终有四行,无论文本的长度如何,请设置android:lines
属性:
<TextView
android:id="@+id/address1"
android:gravity="left"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:maxLines="4"
android:lines="4"
android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."></TextView>
您可以使用TableRow执行此操作,请参阅下面的代码
<TableRow >
<TextView
android:id="@+id/tv_description_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:padding="8dp"
android:text="@string/rating_review"
android:textColor="@color/black"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:maxLines="4"`enter code here`
android:padding="8dp"
android:text="The food test was very good."
android:textColor="@color/black"
android:textColorHint="@color/hint_text_color" />
</TableRow>
答案 1 :(得分:103)
我只是想如果你使用的话我会添加:
android:inputType="textMultiLine"
然后视图停止可点击。我试图在我的幻灯片菜单中获取多行文本视图,这显然需要响应点击。
虽然android:singleLine="false"
工作得很好。
答案 2 :(得分:28)
我不喜欢这些答案。只需设置inputType,TextView将适应其内容
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textMultiLine"/>
在Nexus One(2.3)和Nexus 4(4.4)上进行测试
答案 3 :(得分:10)
只需在ScrollView中添加textview
即可<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="15dp"
android:layout_marginRight="15dp"
android:layout_marginTop="20dp"
android:fillViewport="true">
<TextView
android:id="@+id/txtquestion"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="@drawable/abs__dialog_full_holo_light"
android:lines="20"
android:scrollHorizontally="false"
android:scrollbars="vertical"
android:textSize="15sp" />
</ScrollView>
答案 4 :(得分:8)
只需在文本中添加'\ n'......无需额外属性:)
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Pigeon\nControl\nServices"
android:id="@+id/textView5"
android:layout_gravity="center"
android:paddingLeft="12dp"/>
答案 5 :(得分:5)
尝试使用EditText使其无法点亮且无法对焦,您也可以显示滚动条并删除EditText的下划线。
这是一个例子:
<EditText
android:id="@+id/my_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_parent"
android:inputType="textMultiLine" <!-- multiline -->
android:clickable="false" <!-- unclickable -->
android:focusable="false" <!-- unfocusable -->
android:scrollbars="vertical" <!-- enable scrolling vertically -->
android:background="@android:color/transparent" <!-- hide the underbar of EditText -->
/>
希望这会有所帮助:)
答案 6 :(得分:5)
我不喜欢强制文本视图中行数的解决方案。我建议你通过解决方案proposed here来解决它。正如我所看到的那样,OP也在努力使文本视图在表格中看起来很合适,而shrinkColumns
是传递的正确指令,以实现所需的目标。
答案 7 :(得分:3)
我在多行TextView中找到的最佳答案是:
android:inputType="textMultiLine"
答案 8 :(得分:3)
首先用"\n"
等价Html
替换"<br>"
然后在字符串上调用Html.fromHtml()
。请按照以下步骤操作:
String text= model.getMessageBody().toString().replace("\n", "<br>")
textView.setText(Html.fromHtml(Html.fromHtml(text).toString()))
这很有效。
答案 9 :(得分:2)
我学到的是添加&#34; \ n&#34;在你希望它制动成下一行的单词之间。例如......
<TextView
android:id="@+id/time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:text="M-F 9am-5pm \n By Appointment Only" />
在下午5点到下午之间\ n允许我更多地控制我希望我的下一行开始和结束的位置。
答案 10 :(得分:2)
您可以使用android:inputType =“ textMultiLine”
<TextView android:id="@+id/address1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:maxLines="4"
android:inputType="textMultiLine"
android:text="Johar Mor, Gulistan-e-Johar, Karachi" />
答案 11 :(得分:1)
我用过:
TableLayout tablelayout = (TableLayout) view.findViewById(R.id.table);
tablelayout.setColumnShrinkable(1,true);
它对我有用。 1是列数。
答案 12 :(得分:0)
You can do this with TableRow, see below code
<TableRow >
<TextView
android:id="@+id/tv_description_heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:padding="8dp"
android:text="@string/rating_review"
android:textColor="@color/black"
android:textStyle="bold" />
<TextView
android:id="@+id/tv_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:maxLines="4"`enter code here`
android:padding="8dp"
android:text="The food test was very good."
android:textColor="@color/black"
android:textColorHint="@color/hint_text_color" />
</TableRow>
答案 13 :(得分:0)
最简单的方法
<TableRow>
<TextView android:id="@+id/address1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left"
android:maxLines="4"
android:singleLine="false"
android:text="Johar Mor,\n Gulistan-e-Johar,\n Karachi" >
</TextView>
</TableRow>
在要插入新行的地方使用\n
希望对您有帮助
答案 14 :(得分:0)
键是结合了singleline=false
,lines
或maxlines
<TextView
android:id="@+id/txtBowlers"
style="@style/Default_TextBox.Small"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:singleLine="false"
android:maxLines="6"
android:text="Bob\nSally\nJohn"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/txtTeamName"
app:layout_constraintTop_toBottomOf="@+id/txtTeamName"/>
答案 15 :(得分:0)
我希望这些答案有些陈旧,只需更改资源布局文件中的输入类型即可解决您的问题。例如:
<EditText
android:id="@+id/notesInput"
android:hint="Notes"
android:inputType="textMultiLine"
/>
答案 16 :(得分:0)
TextView用于在Android应用程序上显示文本。默认情况下,TextView在一行上显示文本,如果很长,则TextView将自动以更多行显示,以最合乎逻辑的方式显示其文本。
Android开发人员可以通过编程和语法在TextView上创建新行。 Android开发人员可以创建多行TextView,而无需根据android:minLines属性将文本分成多行。 创建layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/text_view1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:background="#DA70D6"
android:text="This is line 1 \nThis is line 2 \nLine number 3"
/>
<TextView
android:id="@+id/text_view2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:background="#DEB887"
android:text="This is line 1 \nThis is line 2 \nLine number 3"
android:maxLines="2"
/>
<TextView
android:id="@+id/text_view3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:background="#8FBC8F"
android:text="This is line 1 \nThis is line 2"
android:minLines="3"
/>
<TextView
android:id="@+id/text_view4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:background="#5F9EA0"
android:text="@string/Multiline_Text_By_N"
/>
</LinearLayout>
在文件string.xml中添加字符串
<string name="Multiline_Text_By_N">
Line number 1 \nLine number 2
</string>
来源:https://code-android-example.blogspot.com/2020/11/android-textview-multiline-example.html
答案 17 :(得分:0)
以下代码适用于单行和多行文本视图
isMultiLine = 如果为 true,则 Textview 显示为多行,否则为单行
Part
答案 18 :(得分:-1)
为什么不声明字符串而不是在布局文件中写入长行。为此,你必须在布局文件'android:text =“@ string / text”'中声明一行代码,然后转到\\ app \ src \ main \ res \ values \ strings.xml并添加一行代码'你的多行文字在这里'也可以使用'\ n'来断开该行的任何一点,该行将自动调整。
答案 19 :(得分:-3)
对我而言,没有解决方案不起作用。 我知道这不是这个问题的完整答案,但有时它可以提供帮助。
我在垂直线性布局中放置了4个textviews。
<Linearlayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation:"vertical"
...>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text:"line1"
.../>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text:"line2"
.../>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text:"line3"
.../>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text:"line4"
.../>
</LinearLayout>
此解决方案适用于文本视图文本不变的情况,例如标签。
答案 20 :(得分:-20)
当TextView没有足够的空间放入单行并且singLine没有设置为true时,它将是多行的。
如果它在一行中得到空格,它就不会是多行。