Хороший метод
Лучший способ решить эту проблему - создать собственный класс, который расширяет Preference / PreferenceScreen. Требуемый ресурс макета вызывается при инициализации класса:
setWidgetLayoutResource(R.layout.preference_color);
Создает вид, отображаемый в области виджетов, который, я думаю, не выделяется серым цветом, когда предпочтение отключено.
Hacky / Ugly Method
Боюсь, что я только обдумал эту проблему, я не верю, что виджеты поддерживают состояния.
Просто измените виджет программно:
Preference BGColor = findPreference("Setting_BG_Color");
BGColor.setWidgetLayoutResource(R.layout.ic_custom);
Затем изменяйте компоновку виджета при каждом вызове зависимости (что-то вроде грязного).
pref1 = (Preference) findPreference("Setting_Pref1");
pref1.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// Check what object returned (assume checkbox pref)
if ((boolean)newValue){
BGColor.setWidgetLayoutResource(R.layout.ic_custom2);
}
return true;
}
});