Android:如何在TableLayout的列中居中查看?

ab1*_*b11 13 android tablelayout

我正在尝试使用CheckBoxes网格创建一个TabeLayout.顶部是2个标题,每个附加行包含一个标签和2个CheckBoxes.我希望该表填充所有可用空间,第一列定向到左侧,CheckBoxes及其标题将在其列中居中.在下面的布局中,标题显示为正确居中,但CheckBox不是.我为其中一个CheckBox添加了一个背景颜色,这表明CheckBox实际上已经增长到填充它的列(这就是为什么它不会按照需要居中); 尽管有"wrap_content"布局参数.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:orientation="vertical">
    <TableLayout 
        android:stretchColumns="1,2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TableRow>
            <TextView 
                android:text="" 
                android:gravity="center_horizontal"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>
            <TextView 
                android:text="First category" 
                android:gravity="center_horizontal"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>
            <TextView 
                android:text="2nd category" 
                android:gravity="center_horizontal"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>
        </TableRow>
        <TableRow>
            <TextView 
                android:text="Row 1: " 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content">
            </TextView>
            <CheckBox
                android:background="#FF001122"
                android:layout_height="50dip"
                android:layout_width="wrap_content" 
                android:gravity="center_horizontal">
            </CheckBox>
            <CheckBox
                android:layout_height="50dip"
                android:layout_width="wrap_content" 
                android:gravity="center_horizontal">
            </CheckBox>
        </TableRow>
    </TableLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Bri*_*ley 26

在CheckBox上,android:gravity="center_horizontal"您需要设置而不是设置android:layout_gravity="center_horizontal"

android:gravity控制视图如何在其自己的容器中布置其内容,并且由于您将宽度设置为"wrap_content",因此CheckBox没有空白空间将其自身置于其中.

android:layout_weight 告诉父视图(在本例中为TableRow)如何定位子项,因此它将CheckBox放在表格单元格中.

  • 以编程方式我们可以这样设置:`TableRow.LayoutParams params = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,TableRow.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER_HORIZONTAL;` (4认同)