我正在努力对齐下面所述的布局中的表格行中的复选框。
我哪里出错了?

您可以在图片中看到复选框向左对齐,我希望它们位于中心。

我尝试了layout-gravity中的所有功能,还尝试将复选框放在另一个布局中,但没有任何帮助。

android - CheckBox不在TableRow中居中-LMLPHP

xml看起来像这样:

<!--  TABLE  -->
<TableLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="@dimen/activity_horizontal_margin"
    android:layout_marginRight="@dimen/activity_horizontal_margin"
    android:layout_marginTop="@dimen/activity_top_margin"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <!--  HEADER  -->
    <TableRow android:background="@drawable/table_border_header">

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/table_border_header"
            android:padding="4dp"
            android:text="HEADER 1"
            android:textAlignment="textStart"
            android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/table_border_header"
            android:padding="4dp"
            android:text="HEADER 2"
            android:textAlignment="center"
            android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
            android:textStyle="bold" />

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/table_border_header"
            android:padding="4dp"
            android:text="HEADER 3"
            android:textAlignment="center"
            android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"
            android:textStyle="bold" />

    </TableRow>

    <!-- SECOND ROW -->
    <TableRow android:background="@drawable/table_border">

        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:background="@drawable/table_border"
            android:padding="4dp"
            android:text="SEED 1"
            android:textAlignment="textStart"
            android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium" />

        <CheckBox
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:background="@drawable/table_border"
            android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" />

        <CheckBox
            android:layout_width="0dp"
            android:layout_gravity="center_horizontal"
            android:layout_weight="1"
            android:background="@drawable/table_border"
            android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" />

    </TableRow>
</TableLayout>

最佳答案

问题是Checkbox小部件使用带有drawableLeft属性的常规TextView,因为它希望同时显示文本。 (这就是为什么您看到它垂直居中,但向左稍微偏移的原因。)


您可以使用父级布局来实现此目的:

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center">

                <CheckBox
                    android:id="@+id/checkbox_star"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />
            </LinearLayout>


尝试这个

    <TableRow android:background="@drawable/table_border">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_border"
                android:text="SEED 1"
                android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium" />

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center">
            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:background="@drawable/table_border"
                android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" />
        </LinearLayout>


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center">

            <CheckBox
                android:layout_width="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_height="wrap_content"
                android:background="@drawable/table_border"
                android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large" />

        </LinearLayout>


    </TableRow>

10-07 19:37
查看更多