带有margin和layout_gravity的Android TableLayout问题

时间:2014-01-31 23:57:02

标签: android android-layout

最简单地看看问题是什么(如果你想看到它,请跳到图像)。

这是我的XML。它由四列组成。第一行包含标题,第二行包含值。

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

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#0000FF"
            android:text="Start Day" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#0000FF"
            android:text="Start Time" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#0000FF"
            android:text="End Day" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#0000FF"
            android:text="End Time" />
    </TableRow>

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp"
            android:text="REALLY LONG TEXT" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp"
            android:text="REALLY LONG TEXT" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp"
            android:text="REALLY LONG TEXT" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp"
            android:text="REALLY LONG TEXT" />
    </TableRow>
</TableLayout>

我希望标题和值始终居中。只需使用wrap_content和layout_gravity = center,对吧?这样可以正常工作,直到我想在值之间加上一个余量(你可以在第二行看到这个)。然后,突然间,一切都出了差错。

这就是我得到的。什么在...?

enter image description here

边缘只会搞砸一切。我对此感到惊讶,因为我希望边距可以简单地扩展每列的宽度,而TableLayout可以将标题放在这个更宽的列中。相反......好吧,我不确定发生了什么。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:0)

当你给予 机器人:layout_marginRight = “10dp”
机器人:layout_marginLeft = “10dp”
对于每个textview,
在第一个textview之后,对于后续的textview,它变为20。

根据CommonsWare的建议,填充似乎可以解决您的问题:

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

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#0000FF"
            android:text="Start Day" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#0000FF"
            android:text="Start Time" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#0000FF"
            android:text="End Day" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#0000FF"
            android:text="End Time" />
    </TableRow>

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

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="5dp"
            android:text="REALLY LONG TEXT" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="5dp"
            android:text="REALLY LONG TEXT" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="5dp"
            android:text="REALLY LONG TEXT" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:padding="5dp"
            android:text="REALLY LONG TEXT" />
    </TableRow>

</TableLayout>