我曾经PreferenceActivity
对我的 android 应用程序有偏好。我希望当另一个偏好说“pref 1”未被选中时启用一个偏好说“pref 2”,而当“pref 1”被选中时禁用“pref 2”。即与android:dependancy
属性完全相反。
我怎样才能做到这一点?
我曾经PreferenceActivity
对我的 android 应用程序有偏好。我希望当另一个偏好说“pref 1”未被选中时启用一个偏好说“pref 2”,而当“pref 1”被选中时禁用“pref 2”。即与android:dependancy
属性完全相反。
我怎样才能做到这一点?
是的,可以开箱即用。假设您想在 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 属性中。
根据此处的文档,您可以向 CheckBoxPreference 标记添加一个属性,如下所示:
android:disableDependentsState="true"
默认情况下这是false,这意味着当复选框被取消选中时,依赖项被禁用,但是通过将其设置为true,它应该具有相反的效果。
我认为没有任何开箱即用的解决方案,即倒置dependancy
属性。但总有点击听众:
preference1.setOnPreferenceClickListener(pref1_click);
....
private OnPreferenceClickListener pref1_click = new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
preference2.setEnabled(!preference1.isChecked());
return true;
}
}
我假设您使用的是 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);
}
}
}
祝你好运!!