2

一旦状态从打开更改为关闭,我想更改我的 SwitchPreference 中的图标(例如,用于启用通知声音),反之亦然。

这是我的 SwitchPreference 的代码:

<SwitchPreference
    android:key="@string/pref_key_sound"
    android:id="@+id/pref_key_sound"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:title="@string/pref_sound"
    android:summaryOff="Off"
    android:summaryOn ="On"
    android:showText="true"
    android:defaultValue="false"
    android:icon="@mipmap/ic_volume"
/>

正如您在此处看到的,我只设置了一个固定图标。

4

1 回答 1

2

我解决了这个问题。

在我的 PreferenceActivity 中,我注册了我的 SharedPreferences 来监听这样的变化:prefs.registerOnSharedPreferenceChangeListener.

onSharedPreferenceChanged回调中,我刚刚检查了键是否对应于我的一个,SwitchPreference如果是,我通过获取存储在中的布尔值来检查它是否被选中SharedPreferences

boolean isOn = sharedPreferences.getBoolean(getString(R.string.pref_key_sound), true);

之后我获得了对我的 SwitchPreference 的引用:

SwitchPreference switchPreference = (SwitchPreference) settingsFragment.findPreference("pref_key_sound");

并且只需根据布尔值更改图标,isOn因为每次按下开关时都会更新该值:

if (isOn) {

     switchPreference.setIcon(R.mipmap.ic_volume);

   } else {

      switchPreference.setIcon(R.mipmap.ic_volume_off);

   }

就那么简单!:) 希望很清楚!

于 2015-08-18T10:24:13.630 回答