Android:更改选中/未选中程序的复选框首选项图标

Android:更改选中/未选中程序的复选框首选项图标,android,image,checkbox,icons,checkboxpreference,Android,Image,Checkbox,Icons,Checkboxpreference,我有一些CheckBoxPreferences,我可以通过如下所示的xml更改它们的图标,但由于用户除了直接单击复选框外,还有其他触发复选框操作的方法(例如,在另一个活动或甚至另一个应用程序中)我希望能够根据随操作发生的值更改以编程方式设置图标。例如,如果蓝牙处于打开状态,我希望图标是一个图像,而当蓝牙处于关闭状态时,我希望它是另一个图像。是否可以通过编程方式更改此图像 <CheckBox xmlns:android="http://schemas.android.com/apk/res/

我有一些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:/>

找到了解决方案:

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

<?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> 

//这是xml选择器“@drawable/checkbox”
相应地,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属性,这也会自动更改图标。

不确定问题出在哪里。要更改图像,只需使用chk=(CheckBox)findviewbyd(android.R.id.CheckBox);和chk.setBackgroundResource()?以上只是CheckBoxPreferences(而非视图)的xml布局,我通过将android:widgetLayout=“@layout/custom_checkbox”添加到它们的xml属性来使用它。我需要通过代码更改这些复选框首选项的复选框图像。。。