我正在尝试SwitchPreference
根据其状态更改我的图标。如果SwitchPreference
打开,我希望图标设置为@drawable/ic_notifications_active
,但如果关闭,我希望图标设置为@drawable/ic_notifications_off
。
这是我的PreferenceScreen
xml 文件中的内容:
<SwitchPreference
android:icon="@drawable/ic_notifications_active"
android:key="notifications_switch_preference"
android:defaultValue="true"
app:title="Receive Notifications" />
这就是我的设计选项卡中的样子:
在我的SettingsActivity
中,我有这组代码来检测对以下内容的更改SwitchPreference
:
notificationsPreference?.onPreferenceChangeListener =
Preference.OnPreferenceChangeListener { preference, newValue ->
val switched: Boolean = (preference as SwitchPreference)
.isChecked
if (switched) {
if (notificationsPreference != null) {
notificationsPreference.icon = resources.getDrawable(R.drawable.ic_notifications_active)
}
} else {
if (notificationsPreference != null) {
notificationsPreference.icon = resources.getDrawable(R.drawable.ic_notifications_off)
}
}
true
}
现在的问题是当我运行我的应用程序并第一次单击SwitchPreference
切换时,它会将图标的颜色更改为白色,但不是实际的图标。当我再次单击时,它会更改图标,但它仍然是白色的,不再是默认的灰色。现在为错误的状态显示错误的图标。
这是开启和关闭状态的样子:
如何做到这一点,以便当用户单击切换时,它会更改为正确的图标并且不会更改颜色。我也希望它在第一次尝试时起作用,而不是在第二次尝试时。