【问题标题】:CheckBox not centered in the TableRowCheckBox 不在 TableRow 中居中
【发布时间】:2018-02-05 23:39:34
【问题描述】:

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

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

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

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>

【问题讨论】:

    标签: android checkbox tablelayout android-tablayout


    【解决方案1】:

    问题在于 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>
    

    【讨论】:

      【解决方案2】:

      我打赌你的0dp 宽度设置为match_parent,试试wrap_content

          <CheckBox
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_gravity="center_horizontal" />
      

      【讨论】:

      • 是的,我知道环绕内容会起作用,但是我无法均匀分布列。
      猜你喜欢
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      相关资源
      最近更新 更多