是否有与android:dependency
完全相反的XML属性?
我希望在另一个未选中时启用从属首选项,并在选中时禁用它。
编辑:也许问题不出在android:dependency
上,也许我可以添加一个xml属性来禁用该首选项的默认值,然后android:dependency
会按照我想要的相反方式切换它。
再次编辑:我试着在首选项中设置android:enabled="false"
,它会像我希望的那样禁用它,但即使它依赖于另一个首选项,它也没有像我希望的那样启用它
发布于 2010-08-29 02:35:15
实际上是我自己找到的,我想把它贴在这里,以帮助任何可能有同样问题的人:
android:disableDependentsState="true"
把它放在控制偏好中。
发布于 2013-05-15 22:18:20
Dmytro Zarezenko问到,如果您希望在依赖项所依赖的首选项为true时启用某些依赖项,而在该首选项为false时启用某些依赖项,该怎么办。
使用上面描述的方法来设置一种类型的所有从属首选项(具有更大的数字)。然后(具有实现OnSharedPreferenceChangeListener的类)在首选项活动和/或首选项片段中具有如下代码:
@Override
public void onResume()
{
super.onResume();
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause()
{
super.onPause();
sharedPreferences.unregisterOnSharedPreferenceChangeListener(this);
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
if (key.equals("pref_that_they_depend-upon")
{
// Iterate over the preferences that need to be enabled or disabled,
// lets say there is just one called the_awkward_one.
Preference preference = findPreference("the_awkward_one");
// Or preference.setEnabled(! sharedPreferences.getBoolean(("pref_that_they_depend-upon", defaultValue));
preference.setEnabled(sharedPreferences.getBoolean(("pref_that_they_depend-upon", defaultValue));
}
}
发布于 2011-12-16 00:12:15
这是我的代码示例,用于从代码而不是XML完成此操作。
String eitherKey = "either";
String orKey = "or";
CheckBoxPreference either = new CheckBoxPreference(this);
either.setKey(eitherKey);
either.setTitle("Either");
either.setSummary("It is either one or");
either.setDefaultValue(false);
either.setDisableDependentsState(true);
inlinePrefCat.addPreference(either);
try
{
//Crossfade Time
CheckBoxPreference or = new CheckBoxPreference(this);
or.setKey(orKey);
or.setTitle("Or");
or.setSummary("the other");
inlinePrefCat.addPreference(or);
or.setDependency(eitherKey);
}
catch (Exception e)
{
}
https://stackoverflow.com/questions/3591901
复制相似问题