我有这个layout.xml,我更改了按钮的“layout_gravity”属性,但无论分配什么值,两个按钮都放在linearlayout容器的左侧。我希望它们是中心对齐的(评论是出于教学原因,但我放置它们以防它们可能成为问题):
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
xmlns:android="http://schemas.android.com/apk/res/android">
<!--root element must specify the Android resource XML namespace -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="24dp"
android:text="@string/question_text"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/true_button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/false_button"
android:layout_gravity="right" />
<!--The XML elements :: <string name="false_button">False</string>
will have to be defined in strings.xml-->
</LinearLayout>
答案 0 :(得分:1)
尝试以下布局。我将android:gravity="center_horizontal"
编辑为第二个LinearLayout
。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical" >
<!-- root element must specify the Android resource XML namespace -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="24dp"
android:text="Question" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="True" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:text="False" />
</LinearLayout>
</LinearLayout>
<强>解释强>
首先LinearLayout
有gravity=center
。对。它将以孩子为中心。绝对正确。但第二个LinearLayout
也是中心,但它又是一个持有者。所以它有自己的属性。虽然第二个布局的父布局有gravity=center
,但仅适用于其直接子项。不是孩子的孩子。因此,您必须再次声明任何其他属性以适用于其子女。
答案 1 :(得分:1)
只需将android:layout_width="match_parent"
更改为内部android:layout_width="wrap_content"
中的LinearLayout
。
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="24dp"
android:text="@string/question_text"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/false_button" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/true_button"
android:layout_gravity="right" />
</LinearLayout>
</LinearLayout>
答案 2 :(得分:0)
您可以使用 android:layout_weight 进行管理,如下所示......
<!-- root element must specify the Android resource XML namespace -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="24dp"
android:text="@string/question_text" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2" >
<Button
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/true_button" />
<Button
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="1"
android:text="@string/false_button" />
<!--
The XML elements :: <string name="false_button">False</string>
will have to be defined in strings.xml
-->
</LinearLayout>