为什么我不能在 Android GridLayout 的两列中居中放置按钮?
Why can't I center a button across two columns of an Android GridLayout?
我正在尝试创建一个包含两行和两列的静态 GridLayout
。在底行,一个按钮应位于两列的中央。相反,该按钮似乎仅在右列中居中:
(我拉长了按钮的高度,这样不对称会更明显。)
我希望 Button
元素中的这些属性使其在两列中居中:
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="center_horizontal"
这是我的完整布局:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"
android:rowCount="2">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_column="0"
android:text="Title: " />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_column="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="@string/search"
android:layout_row="1"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="center_horizontal"/>
</GridLayout>
如何让一个元素在多列中居中?
试试这个
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2"
android:rowCount="2">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="0"
android:text="Title: " />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="0"
android:text="hello world" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_row="1"
android:text="search" /></GridLayout>
我觉得之前的答案不错,但您也可以将按钮放在线性布局中,例如:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"
android:rowCount="2">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="0"
android:text="Title: " />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="0"
android:text="hello world" />
<LinearLayout
android:orientation="vertical"
android:layout_column="0"
android:layout_row="1"
android:layout_columnSpan="2"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="test buttontest buttontest button"
android:layout_gravity="center_horizontal"
android:layout_weight="1" />
</LinearLayout>
</GridLayout>
这应该符合您的目标:
我正在尝试创建一个包含两行和两列的静态 GridLayout
。在底行,一个按钮应位于两列的中央。相反,该按钮似乎仅在右列中居中:
(我拉长了按钮的高度,这样不对称会更明显。)
我希望 Button
元素中的这些属性使其在两列中居中:
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="center_horizontal"
这是我的完整布局:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"
android:rowCount="2">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_column="0"
android:text="Title: " />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_row="0"
android:layout_column="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="@string/search"
android:layout_row="1"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="center_horizontal"/>
</GridLayout>
如何让一个元素在多列中居中?
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2"
android:rowCount="2">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="0"
android:text="Title: " />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="0"
android:text="hello world" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_columnSpan="2"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_row="1"
android:text="search" /></GridLayout>
我觉得之前的答案不错,但您也可以将按钮放在线性布局中,例如:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"
android:rowCount="2">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="0"
android:text="Title: " />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="0"
android:text="hello world" />
<LinearLayout
android:orientation="vertical"
android:layout_column="0"
android:layout_row="1"
android:layout_columnSpan="2"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="test buttontest buttontest button"
android:layout_gravity="center_horizontal"
android:layout_weight="1" />
</LinearLayout>
</GridLayout>
这应该符合您的目标: