Android中的多行TextView?

Cha*_*har 142 android multiline tablelayout textview

我确实喜欢下面的内容 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>
Run Code Online (Sandbox Code Playgroud)

它不起作用multiline,我正在使用TableLayout......

那我在这做什么错呢?

Zar*_*rah 192

如果您输入的文本很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>
Run Code Online (Sandbox Code Playgroud)

您可以使用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>
Run Code Online (Sandbox Code Playgroud)

  • OP**没有"希望TextView总是有四行,无论文本的长度如何". (21认同)
  • 这个答案对我有用.但我得到了最好的结果,不是最大线和线,而是最大线和最小线,并没有使用线.我将minlines设置为1,maxlines大于最大数据.这样,我得到1到N行,以获得紧凑的数据视图. (6认同)

Rya*_*yan 108

我试着评论上面的一个答案,但我没有足够的声誉.
我只是想如果你使用的话我会添加:

android:inputType="textMultiLine"

然后视图停止可点击.我试图在我的幻灯片菜单中获得多行文本视图,这显然需要响应点击.

虽然android:singleLine="false"工作正常.

  • android:singleLine现在已弃用 (3认同)
  • android:singleLine =“ false”已被弃用,因为它是默认值 (3认同)
  • 这并不完全正确,因为Android自己的lint错误表明你只使用EditText而不是TextView这个属性. (2认同)

Mar*_*ues 28

我不喜欢这些答案.只需设置inputType,TextView就会适应其内容

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine"/>
Run Code Online (Sandbox Code Playgroud)

在Nexus One(2.3)和Nexus 4(4.4)上测试

  • android:inputType ="textMultiLine"不适用于TextView,它适用于EditText,如果你尝试这样做,你会收到警告 (48认同)
  • 你应该听警告.使用@Ryans解决方案. (2认同)

Pra*_*ale 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>
Run Code Online (Sandbox Code Playgroud)


小智 10

只需在文本中加上'\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"/> 
Run Code Online (Sandbox Code Playgroud)

  • 此解决方案不能用于动态设置文本 (4认同)
  • @SagarDevanga,我刚刚检查过,默认情况下动态和静态文本都是多行的(如果使用\ n),所以这是一个正确的解决方案。没有`singleLine = false`,没有`lines = 4`,依此类推。 (2认同)

小智 7

我学到的是在您希望它进入下一行的单词之间添加“\n”。例如...

<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" />
Run Code Online (Sandbox Code Playgroud)

下午 5 点和 By 之间的 \n 使我可以更好地控制下一行的开始和结束位置。


Bor*_*jev 5

我不喜欢强制文本视图中行数的解决方案.我建议你通过这里提出的解决方案来解决它.正如我所看到的,OP也在努力使文本视图在表格中看起来像是正确的,并且shrinkColumns是传递到实现所需内容的正确指令.


Kha*_*Meg 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 -->
/>  
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)