【问题标题】:Android TableLayout and horizontal gravityAndroid TableLayout 和水平重力
【发布时间】:2016-05-06 00:10:06
【问题描述】:

我有一个 TableLayout,它只包含一行和一个单元格。 我希望我的单元格的内容水平居中。 我尝试了两种方法:

第一种方法,我在 TableRow 元素上设置属性 android:gravity="center_horizo​​ntal" 并且它按预期工作:

    <?xml version="1.0" encoding="utf-8"?>
    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TableRow android:gravity="center_horizontal">
            <Button
                android:id="@+id/MyButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"            
                android:text="@string/Hello" />
        </TableRow>
    </TableLayout>

第二种方法,我直接在单元格内容(此处的按钮)上设置属性 android:layout_gravity="center_horizo​​ntal" 但这不会使按钮居中:

<?xml version="1.0" encoding="utf-8"?>
        <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TableRow>
                <Button
                    android:id="@+id/MyButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"            
                    android:layout_gravity="center_horizontal"
                    android:text="@string/Hello" />
            </TableRow>
        </TableLayout>

有人能解释一下为什么第二种方法不起作用吗?

谢谢

丽安娜

【问题讨论】:

    标签: android layout tablelayout gravity


    【解决方案1】:

    android:gravity 指的是视图内的子内容。在您的情况下,这会影响表格单元格的内容。

    android:layout_gravity 指的是视图在其父视图中的位置。在这种情况下,单元格在表格中的位置,而不是单元格内容。单元格内容不会受到影响。

    有关其他示例和进一步说明,请参阅此类似问题:Gravity and layout_gravity on Android

    【讨论】:

    • 您好,感谢您的回答。在我的示例中,我理解为什么第一种方法有效。不清楚的是为什么第二个失败.. 应用于按钮的 layout_gravity 属性应该在其父视图(TableRow)内居中按钮
    • 我不明白这怎么不清楚。 Gravity 用于表格单元格的子内容。 Layout_gravity 用于将表格单元格本身放置在其父级中。正如答案中所解释的那样。
    • 在我的示例中,Button 是 TableRow 的子项。当我在 TableRow 上设置“重力”属性时,它的内容将居中,这里是按钮。但是,当我在 Button 上设置“layout_gravity”属性时,我希望它也能在其容器内居中,即 TableRow。我认为在容器上设置“重力”或在内容上设置“layout_gravity”应该具有相同的行为。我希望我更清楚..
    • 绝对不应该有相同的行为。布局重力和重力是不同的。也许别人能比我解释得更好。
    • 感谢您的回答。在 TableRow 上设置“重力”属性将使 TableRow 的所有单元格居中。如果我的 TableRow 包含两列(单元格),我想要实现的是能够将第一列的内容居中并与第二列的内容对齐。我无法通过使用“重力”来实现这一点在 TableRow 上。
    猜你喜欢
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多