我有一个主要的布尔设置,当为true时会使一个孩子处于活动状态,但是当它为false时,将禁用子a,并且子B将处于活动状态。
即;
if (ParentSetting == true) activate childSettingB elseIf(ParentSetting == false) activate childSettingB
我知道如何在xml标签中具有依赖性,但是是否可以与特定的子设置建立反向关系?
谢谢
PS。如果可能,我想用XML来做...
答案 0 :(得分:7)
使用CheckBoxPreference中的android:disableDependentsState="true"
例如:
<CheckBoxPreference
android:key="cb_key"
android:title="@string/stop_service"
android:summaryOn="On
android:summaryOff="Off"
android:defaultValue="false"
android:disableDependentsState="true" />
<Preference
android:key="pref_key"
android:title="pref_title"
android:summary="pref_summary"
android:dependency="cb_key" />
这样,当CheckBoxPreference为ON时,Preference将被禁用,反之亦然。
答案 1 :(得分:6)
没有办法在xml中完全实现这一点。
在父级(正在依赖的首选项)上使用android:disableDependentsState =“true”将允许您反转依赖项,但它将同时用于子级设置。这不是你想要的。 disableDependentsState
唯一的方法是以编程方式进行。你可能已经知道如何做到这一点。
SwitchPreference dependee = (SwitchPreference) findPreference("dependee");
dependent2.setEnabled(!dependee.isChecked());
dependee.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue){
boolean isEnabled = ((Boolean) newValue).booleanValue();
dependent2.setEnabled(!isEnabled);
return true;
}
});