为什么设置为同一列的TableLayout组件无法对齐?

时间:2018-12-16 23:59:38

标签: android-layout android-tablelayout

我很确定我缺少TableLayout的基本知识,但是经过大量的搜索和阅读后,我无法弄清楚它。 这是代码:

<TableLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TableRow>
        <Button android:layout_column="0" android:text="00" android:visibility="gone"/>
        <Button android:layout_column="1" android:text="01"/>
    </TableRow>
    <TableRow>
        <Button android:layout_column="0"  android:text="10"/>
        <Button android:layout_column="1" android:text="11"/>
    </TableRow>
</TableLayout>

这是结果:

enter image description here

我希望按钮“ 01”与按钮“ 11”对齐,因为这两个按钮都设置在第1列。有人能指出我在想什么吗?

[编辑] 如果可见性值“ gone”为“ 00”,则为什么将其删除会使其工作如下:

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

    <TableRow>
        <Button
            android:layout_column="1"
            android:text="01" />
    </TableRow>

    <TableRow>

        <Button
            android:layout_column="0"
            android:text="10" />

        <Button
            android:layout_column="1"
            android:text="11" />
    </TableRow>
</TableLayout>

结果:

enter image description here

1 个答案:

答案 0 :(得分:1)

这是因为您将 Button visibility GONE设置为值 00 ,这就是为什么它不占用布局的原因

在这里您可以找到两者的用途。

View.GONE此视图是不可见的,出于layout的目的,它不占用任何空间。

View.INVISIBLE此视图是不可见的,但仍出于layout的目的而占用空间。

因此只需将值为{em> 00 的Button visibility 更改为 invisible 即可。

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

    <TableRow>

        <Button
            android:layout_column="0"
            android:text="00"
            android:visibility="invisible" />

        <Button
            android:layout_column="1"
            android:text="01" />
    </TableRow>

    <TableRow>

        <Button
            android:layout_column="0"
            android:text="10" />

        <Button
            android:layout_column="1"
            android:text="11" />
    </TableRow>
</TableLayout>

希望这会对您有所帮助。