0

我有一些 CheckBoxPreferences 并且我通过 xml 更改它们的图标没有问题,如下所示和这里但是由于用户有其他方式来触发复选框的操作而不是直接单击它(即可能在另一个活动甚至另一个应用程序中)我希望能够根据与操作一起发生的值更改以编程方式设置图标。例如,如果蓝牙打开,我希望图标是一个图像,而当蓝牙关闭时,我希望它是另一个图像。是否可以以编程方式更改此图像?

<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:button="@drawable/check_box_icon"
android:clickable="true"
android:focusable="false"
android:/>
4

1 回答 1

1

找到了解决方案:

我使用在问题中提供的链接中找到的方法设置选择器,以便我可以根据复选框的当前状态将其与我的所有 CheckBoxPreferences 一起用于不同图像:-

<?xml version="1.0" encoding="utf-8"?>
//This is the xml selector "@drawable/checkbox"
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_checked="false"
  android:drawable="@drawable/checkbox_off_background" />
 <item android:state_checked="true"
  android:drawable="@drawable/checkbox_on_background" />
</selector> 

因此,CheckBoxPreference 代码也发生了变化:-

<CheckBox android:layout_width="wrap_content"
android:layout_height="wrap_content" 
android:text="new checkbox"
android:button="@drawable/checkbox"
android:clickable="true"
android:focusable="false" />

现在,我可以调用Checkbox.setChecked()来检查它是否已启用,也可以通过将其设置为 true 或 false 来根据值进行更改。因此,根据 xml 属性,这也会自动更改图标。

于 2012-06-14T19:44:44.487 回答