当 SwitchPreference 的状态从关闭变为打开时,如何更改它的图标?
How to change icon of SwitchPreference when it changes state from off to on?
我想在状态从打开更改为关闭后更改我的 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"
/>
如您所见,我只设置了一个固定图标。
我解决了问题。
在我的 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);
}
就这么简单! :) 希望清楚!
我想在状态从打开更改为关闭后更改我的 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"
/>
如您所见,我只设置了一个固定图标。
我解决了问题。
在我的 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);
}
就这么简单! :) 希望清楚!