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
して初めてトグルをクリックすると、アイコンの色が白に変わりますが、実際のアイコンには変わりません。もう一度クリックすると、アイコンが変わりますが、まだ白で、デフォルトのグレーではありません。間違った状態に対して間違ったアイコンが表示されるようになりました。
これは、オン状態とオフ状態の両方で次のようになります。
ユーザーがトグルをクリックすると、正しいアイコンに変わり、色が変わらないようにするにはどうすればよいですか。また、2回目ではなく、最初の試行で動作するようにしたい.