LinearLayout中按钮的layout_gravity无法正常工作

时间:2014-07-15 07:33:28

标签: android android-linearlayout layout-gravity

我的要求是在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>

但结果如下图所示

enter image description here

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

5 个答案:

答案 0 :(得分:2)

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

将以下属性添加到LinearLayout

android:gravity="center_horizontal"

答案 1 :(得分:1)

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

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

在按钮属性中设置 android:layout_gravity =“center”

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

答案 2 :(得分:1)

我们需要弄清楚问题是:

  • 当根布局使用top 垂直属性(例如center_verticalbottomorientation: horizontal) >
  • 当根布局使用left 水平属性(如center_horizontalrightorientation: 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>

Test Image

答案 3 :(得分: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

答案 4 :(得分:0)

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