我正在努力对齐下面所述的布局中的表格行中的复选框。
我哪里出错了?
您可以在图片中看到复选框向左对齐,我希望它们位于中心。
我尝试了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>
最佳答案
问题是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>