Android设置 - 逆依赖

时间:2013-05-01 02:20:53

标签: android xml dependencies settings

我有一个主要的布尔设置,当为true时会使一个孩子处于活动状态,但是当它为false时,将禁用子a,并且子B将处于活动状态。

即;

if (ParentSetting == true) activate childSettingB elseIf(ParentSetting == false) activate childSettingB

我知道如何在xml标签中具有依赖性,但是是否可以与特定的子设置建立反向关系?

谢谢

PS。如果可能,我想用XML来做...

2 个答案:

答案 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;
        }
    });