如何根据开关状态细分或不布局显示一个或两个按钮?

How subdivide or not layout for display one or two button depending on switch state?

我在 Kotlin 中开发了 Android 应用程序的屏幕)。我正在寻找根据开关状态显示一个或两个按钮的良好做法和示例。

如果开关被禁用,我想显示一个占据整个屏幕宽度的按钮(匹配父按钮)。 如果开关被激活,我希望两个按钮显示在同一行上,每个按钮的宽度为 50%。

如何设置这样的结构?

你应该对它们都使用 ConstraintLayoutmatch_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" />