3

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

IE;

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

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

谢谢你

附言。如果可能的话,我想用 XML 来做......

4

2 回答 2

10

android:disableDependentsState="true"在 CheckBoxPreference 中使用

例如:

<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“true”时,Preference 将被禁用,反之亦然。

于 2015-02-20T08:29:20.760 回答
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;
        }
    });
于 2013-05-01T20:31:27.263 回答