如何根据开关状态细分或不布局显示一个或两个按钮?
How subdivide or not layout for display one or two button depending on switch state?
我在 Kotlin 中开发了 Android 应用程序的屏幕)。我正在寻找根据开关状态显示一个或两个按钮的良好做法和示例。
如果开关被禁用,我想显示一个占据整个屏幕宽度的按钮(匹配父按钮)。
如果开关被激活,我希望两个按钮显示在同一行上,每个按钮的宽度为 50%。
如何设置这样的结构?
你应该对它们都使用 ConstraintLayout
和 match_constraint
(0dp),如下所示。注意传播链样式和约束的使用。
通过将一个按钮的可见性设置为 GONE
,您会看到另一个按钮占据整个宽度。您可以在布局编辑器中使用 tools:visibility="gone"
进行测试。
<Button
android:id="@+id/buttonLeft"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="@string/button_left_text"
app:layout_constraintEnd_toStartOf="@+id/buttonRight"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/topElement" />
<Button
android:id="@+id/buttonRight"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="@string/button_right_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/buttonLeft"
app:layout_constraintTop_toBottomOf="@+id/topElement" />
我在 Kotlin 中开发了 Android 应用程序的屏幕)。我正在寻找根据开关状态显示一个或两个按钮的良好做法和示例。
如果开关被禁用,我想显示一个占据整个屏幕宽度的按钮(匹配父按钮)。 如果开关被激活,我希望两个按钮显示在同一行上,每个按钮的宽度为 50%。
如何设置这样的结构?
你应该对它们都使用 ConstraintLayout
和 match_constraint
(0dp),如下所示。注意传播链样式和约束的使用。
通过将一个按钮的可见性设置为 GONE
,您会看到另一个按钮占据整个宽度。您可以在布局编辑器中使用 tools:visibility="gone"
进行测试。
<Button
android:id="@+id/buttonLeft"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="@string/button_left_text"
app:layout_constraintEnd_toStartOf="@+id/buttonRight"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/topElement" />
<Button
android:id="@+id/buttonRight"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="@string/button_right_text"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/buttonLeft"
app:layout_constraintTop_toBottomOf="@+id/topElement" />