android-fragments Android复选框怪异行为(从backstack中取出片段后变为禁用和可点击)

ni65a41a  于 2022-11-14  发布在  Android
关注(0)|答案(2)|浏览(151)

我目前在片段中使用CheckBox时遇到问题。一旦片段开启,核取方块就能正常运作。核取方块的行为会在两种情况下变更:

  • 当我使用“后退”按钮从backStack中取出片段时
  • 当我第二次打开碎片的时候。

看起来像是在重新创建片段时,复选框变为灰色(禁用),但仍然可以单击。

<androidx.appcompat.widget.AppCompatCheckBox
            android:id="@+id/checkbox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            app:layout_constraintTop_toBottomOf="@id/ivLogo"
            app:layout_constraintStart_toStartOf="@id/guideStart"
            app:layout_constraintEnd_toEndOf="@id/guideEnd"/>

我尝试保存它的状态,但没有成功。
PS:在获得此行为后,(checkbox.isEnabled = true)不再起作用。
有什么帮助吗?
先谢谢你。

3npbholx

3npbholx1#

我相信你必须用Android Activity Lifecycle来实验。看起来你需要记住一个状态,然后用它来设置复选框到一个正确的,以前的状态,例如onResume()或其他东西。

pw9qyyiw

pw9qyyiw2#

我找到解决办法了!
我试图覆盖复选框的主题。唯一对我有效的是:Widget.MaterialComponents.CompoundButton.CheckBox
解决方案是使用自定义主题,如下所示:

<style name="ABCheckBox" parent="Widget.MaterialComponents.CompoundButton.CheckBox">
    <item name="android:textAppearance">?attr/textAppearanceBodyMedium</item>
    <item name="buttonTint">@null</item>
</style>

<androidx.appcompat.widget.AppCompatCheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:theme="@style/ABCheckBox"
        android:checked="true"
        android:enabled="true"
        android:minWidth="0dp"
        android:minHeight="0dp"
        android:button="@drawable/selector_checkbox"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"/>

希望对你们有帮助!

相关问题