0

我的要求是在 LinearLayout 中实现这一点。它只有一个子视图。在水平方向中,如果设置了 layout_gravity,则按钮需要位于水平中心。我的布局 xml 是

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="200dp"
android:background="#ffff00"
android:layout_width="match_parent"
android:orientation="horizontal">

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:text="Button" />

</LinearLayout>

但结果如下图

在此处输入图像描述

我期待的是,当 layout_gravity 设置为 center_horizo​​ntal 时,按钮中心为水平。为什么这不起作用

4

5 回答 5

2

您的问题不在于您的实际元素,而在于您的父元素。当您为父元素定义相同的属性时,您的问题将得到解决。

将以下属性添加到LinearLayout

android:gravity="center_horizontal"
于 2014-07-15T07:48:03.603 回答
1

您可以通过两种方法实现它,

在布局属性中设置android:gravity="center_horizo​​ntal"

或者

在 Button 属性中设置android:layout_gravity="center"

您的布局处于“垂直”方向

于 2014-07-15T08:39:23.997 回答
1

我们需要弄清楚的问题是:

  • 小部件在其根布局使用时只能使用垂直属性(如top, center_vertical, )bottomorientation: horizontal
  • 小部件在其根布局使用时只能使用水平属性(如left, center_horizontal, )rightorientation: vertical

所以你需要这样做(测试和工作):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="200dp"
    android:background="#ffff00"
    android:layout_width="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Button" />

</LinearLayout>

测试图像

于 2017-08-19T03:09:35.720 回答
0

将中心水平重力设置为父级:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="200dp"
    android:background="#ffff00"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:gravity="center_horizontal">

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

或者只是将父方向更改为horizontal

于 2014-07-15T07:43:33.223 回答
0

其实你不能。您的根布局是水平方向android:orientation="horizontal"L。如果你想让它工作,只需将 root 的方向更改为vertical(我还没有测试!)

于 2014-07-15T07:48:33.160 回答