我的要求是在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_horizontal时,按钮居中到水平。为什么这不起作用
答案 0 :(得分:2)
你的问题不是你的实际元素,而是你的父元素。当您为父元素定义相同的属性时,您的问题将得到解决。
将以下属性添加到LinearLayout
android:gravity="center_horizontal"
答案 1 :(得分:1)
您可以通过两种方法实现它,
在布局属性中设置 android:gravity =“center_horizontal”
或
在按钮属性中设置 android:layout_gravity =“center”
您的布局处于“垂直”方向
答案 2 :(得分:1)
我们需要弄清楚问题是:
top
center_vertical
,bottom
,orientation: horizontal
) >
left
center_horizontal
,right
,orientation: 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>
答案 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
(我还没测试!)