我在我的android应用程序中使用了PreferenceActivity
来优先选择。我想要一个偏好说“pref 2”在其他偏好说“pref 1”未被选中时被启用,而“pref 2”在被选中“pref 1”时被禁用。
即恰好与android:dependancy
属性相反。
我该怎么做?
答案 0 :(得分:92)
是的,可以开箱即用。 假设你想在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属性中。
答案 1 :(得分:30)
根据文档here,您可以像这样在CheckBoxPreference标记中添加一个属性:
android:disableDependentsState="true"
默认情况下,这是false,这意味着当取消选中复选框时会禁用依赖项,但是通过将其设置为true,它应该具有相反的效果。
答案 2 :(得分:9)
我认为没有任何开箱即用的解决方案,即倒置的dependancy
属性。但总有点击监听器:
preference1.setOnPreferenceClickListener(pref1_click);
....
private OnPreferenceClickListener pref1_click = new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
preference2.setEnabled(!preference1.isChecked());
return true;
}
}
答案 3 :(得分: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);
}
}
}
古德纳克!!