您必须为交换机本身创建自定义布局,您可以像动态一样动态应用它。
preference.setWidgetLayoutResource(R.layout.custom_switch);
但我会详细介绍如何实现这一目标。
因此,您可以在prefers.xml等xml文件中定义首选项
然后在PreferenceActivty类的onCreate()方法中读取它:
SwitchPreference pref = (SwitchPreference) findPreference(getString(R.string.SWITCH)); //pref.setChecked(true); // You can check it already if needed to true or false or a value you have stored persistently pref.setWidgetLayoutResource(R.layout.custom_switch); // THIS IS THE KEY OF ALL THIS. HERE YOU SET A CUSTOM LAYOUT FOR THE WIDGET pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { // Here you can enable/disable whatever you need to return true; } });
custom_switch布局如下所示:
对于开关,您将有2个选择器用于轨道和拇指属性。 这些选择器的drawable可以使用Android Holo Color Generator生成,这是由tasomaniac建议的。 在这种情况下,您所要做的就是复制生成的可绘制文件夹的内容(仅适用于drawable-hdpi,drawable-mdpi,drawable-xhdpi,drawable-xxhdpi)。 但您可以为所需的每个州创建自定义视图。
以下是这些选择器的外观: switch_track:
switch_thumb:
这就是它。 这个解决方案帮助了我。 如果我省略了什么,请告诉我,我会纠正这些问题。