如何在将状态从关闭更改为开启时更改SwitchPreference的图标?

时间:2015-08-18 07:44:35

标签: android android-layout switchpreference

我希望在状态从开启更改为关闭时更改我的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"
/>

正如你在这里看到的,我只设置了一个固定的图标。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

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

onSharedPreferenceChanged回调中,我刚刚检查了密钥是否与我的SwitchPreference对应,如果是,我通过获取存储在{的布尔值来检查是否选中了密钥{1}}:

SharedPreferences

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

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

并且只是根据布尔值SwitchPreference switchPreference = (SwitchPreference) settingsFragment.findPreference("pref_key_sound"); 更改了图标,因为每次按下开关时都会更新该值:

isOn

简单就是这样! :)希望很清楚!