23

我曾经PreferenceActivity对我的 android 应用程序有偏好。我希望当另一个偏好说“pref 1”未被选中时启用一个偏好说“pref 2”,而当“pref 1”被选中时禁用“pref 2”。即与android:dependancy属性完全相反。

我怎样才能做到这一点?

4

4 回答 4

97

是的,可以开箱即用。假设您想在 pref1 关闭时禁用 pref2
这是为 pref1 输入的代码(首选项 xml 布局):

<CheckBoxPreference
    android:title="Pref1"
    android:key="pref1">
</CheckBoxPreference>

这是为 pref2 输入的代码(首选项 xml 布局):

<EditTextPreference
    android:dialogMessage="Pref 2 dialog"
    android:title="Pref2"
    android:key="pref2" 
    android:dependency="pref1">
</EditTextPreference>

就像 sigmazero13 所说,默认情况下 disableDependentsState 是 false 所以你不需要将它包含在 pref1 属性中。

于 2011-06-23T15:03:25.707 回答
31

根据此处的文档,您可以向 CheckBoxPreference 标记添加一个属性,如下所示:

android:disableDependentsState="true"

默认情况下这是false,这意味着当复选框被取消选中时,依赖项被禁用,但是通过将其设置为true,它应该具有相反的效果。

于 2011-05-15T22:15:29.937 回答
9

我认为没有任何开箱即用的解决方案,即倒置dependancy属性。但总有点击听众:

preference1.setOnPreferenceClickListener(pref1_click);

....

private OnPreferenceClickListener pref1_click = new OnPreferenceClickListener() {
    public boolean onPreferenceClick(Preference preference) {
        preference2.setEnabled(!preference1.isChecked());
        return true;
    }
}
于 2010-04-20T06:15:28.950 回答
0

安卓复选框??


我假设您使用的是 Android.widget.checkBox:

http://developer.android.com/reference/android/widget/CheckBox.html

尝试这个

 public class MyActivity extends Activity {
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);

         setContentView(R.layout.content_layout_id);

         final CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkbox_id);
         if (checkBox1.isChecked()) {
             checkBox2.setChecked(false);
         }
     }
 }

祝你好运!!

于 2010-04-20T06:17:42.157 回答