当我最初在 java 或 Kotlin 中设置时,CheckBox 的 isChecked 不起作用

Raj*_*rya 5 xml android android-layout kotlin android-checkbox

如果我最初在 xml 中设置复选框状态,它工作正常,但是当我在 java 或 Kotlin 中动态设置时,它没有按我预期的那样工作。

就像我设置时的例子一样,isChecked = true它应该显示填充强调色的复选框,但它只显示检查边框颜色和强调色,但没有填充内部颜色。

在此处输入图片说明

看看我什么时候设置 isChecked 它只在边框中显示强调色。

如果我设置复选框状态checked = trueisChecked = false在java中设置它看起来像这样

在此处输入图片说明

CheckBox的xml代码

<CheckBox
   android:checked="false"
   android:id="@+id/check_box"
   android:layout_height="wrap_content"
   android:layout_marginTop="@dimen/layout_padding_8dp"
   android:layout_width="wrap_content"
   android:text="@string/check_box_title"/>
Run Code Online (Sandbox Code Playgroud)

科特林代码

check_box.isChecked = false // Setting Uncheck
check_box.isChecked = true // Setting Checked
Run Code Online (Sandbox Code Playgroud)

Kon*_*uki 3

我和你有同样的经历。我只在模拟器和一个真实设备中对此进行了测试,但我发现了两种方法可以使其勾选而无需在 xml 中进行设置(例如,您需要首先从后端获取某些内容以确定是否必须将其设置为从头开始打勾或不打勾):

1)使用Handler延迟命令

Handler().postDelayed({ checkBox?.isChecked = true }, 300)
Run Code Online (Sandbox Code Playgroud)

2)toggle()设置后使用isChecked

checkBox?.isChecked = true 
checkBox?.toggle()
Run Code Online (Sandbox Code Playgroud)

就好像切换触发了 UI 更改一样。问题是,从上面的代码中,您将选中复选框,但其isChecked值将为false.

由于我也必须设置enabled,并且在使用时不知何故搞砸了toggle(),所以我用第一种方法解决了。我真的希望有人找到一种更优雅的方法来解决这个问题......