TextView并不总是扩展到TableLayout中的第二行

时间:2014-04-18 22:07:21

标签: android android-layout textview android-tablelayout

我有一个应用程序正在从json文件中提取信息:

{
 "EVENTS": [
        {
            "what": " TABLE-QUIZ",
            "who": "anyone",
            "when": "31st January",
            "where": "ABC HELLO"
        }
    ]    
}

当我运行应用程序时,有时When列中的文字会在较小的屏幕上切换到第二行。如果What列中的文字太大,它将进入第二行而不会被切断。为什么When列不在What列的第二行?

enter image description here

以下是我正在使用的布局xml

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:shrinkColumns="*"
android:stretchColumns="*" >

<TableRow
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/what"
        android:layout_width="0px"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/textlines"
        android:gravity="center"
        android:textColor="#fff"
        android:textSize="12sp" >

    </TextView>

    <TextView
        android:id="@+id/when"
        android:layout_width="0px"
        android:layout_height="match_parent"
        android:layout_weight="0.65"
        android:background="@drawable/textlines"
        android:gravity="center"
        android:textColor="#fff"
        android:textSize="12sp" >
    </TextView>

    <TextView
        android:id="@+id/where"
        android:layout_width="0px"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/textlines"
        android:gravity="center"
        android:textColor="#fff"
        android:textSize="12sp" >
    </TextView>

    <TextView
        android:id="@+id/forWho"
        android:layout_width="0px"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="@drawable/textlines"
        android:clickable="true"
        android:gravity="center"
        android:onClick="onClick"
        android:textColor="#fff"
        android:textSize="12sp" >
    </TextView>
</TableRow>

</TableLayout>

编辑: 如果我添加:

android:minHeight="30dp"

TextView然后我可以让它显示两行,但我希望有一个自动生效的解决方案。

4 个答案:

答案 0 :(得分:2)

问题是您将TableLayout's width(父级的宽度)设置为wrap_content。将其设置为 match_parent ,就像这样

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    ...

使When列无需切断即可转到下一行。

答案 1 :(得分:1)

您需要查看完整数据意味着在Textview上添加此内容

android:singleLine="false" 

希望这个会帮助你。

答案 2 :(得分:0)

将所有TextView中的android:layout_weight更改为1并将android:layout_width更改为0dp,以便layout_weight="1"属性可以正常工作。

希望这有帮助!

答案 3 :(得分:0)

我希望这会有所帮助

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tableLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:shrinkColumns="*"
    android:stretchColumns="*" >

    <TableRow
        android:id="@+id/tableRow1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal" >

        <TextView
            android:id="@+id/textView41"
            android:text="when"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/textView42"
            android:gravity="center_horizontal"
            android:text="28°C" />

        <TextView
            android:id="@+id/textView43"
            android:gravity="center_horizontal"
            android:text="where" />

        <TextView
            android:id="@+id/textView44"
            android:gravity="center_horizontal"
            android:text="what" />

        <TextView
            android:id="@+id/textView44"
            android:gravity="center_horizontal"
            android:text="for who" />

    </TableRow>
</TableLayout>