首页 > 解决方案 > 为什么 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>

结果如下:

在此处输入图像描述

我预计按钮“01”将与按钮“11”对齐,因为它们都设置为第 1 列。有人能指出我缺少什么吗?

[编辑]如果“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>

结果:

在此处输入图像描述

标签: android-layoutandroid-tablelayout

解决方案


这是因为您visibility GONEButton设置了值为00,所以这就是它在layout中不占用空间的原因。

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

View.GONE此视图是不可见的,并且它不占用任何空间layout

View.INVISIBLE这个视图是不可见的,但它仍然占用空间layout

因此,只需将值00的可见性更改为不可见,就可以按预期工作。Button

<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>

希望这会帮助你。


推荐阅读