android - 如何在 Android 上动态显示和隐藏首选项?

标签 android android-preferences preferenceactivity

有没有办法动态显示和隐藏偏好?就我而言,我有一个复选框首选项,它将禁用或启用 2 个首选项组(“with-”和“without-handicap”组)之一。虽然这将是桌面环境中的理想 GUI,但“有障碍”几乎占据了整个屏幕,而另一个“无障碍”只占据了屏幕的一小部分。

我不想同时显示两个组,而是一次只显示其中一个,并在复选框更改时动态显示或隐藏这两个组。有没有办法做到这一点?

最佳答案

来自 PreferenceActivity 调用

Preference somePreference = findPreference(SOME_PREFERENCE_KEY);
PreferenceScreen preferenceScreen = getPreferenceScreen();
preferenceScreen.removePreference(somePreference);

您可以稍后调用:

preferenceScreen.addPreference(somePreference);

唯一有点棘手的部分是在重新添加时使顺序正确。查看 PreferenceScreen文档,尤其是它的基类,PreferenceGroup了解详情。

注意:以上内容仅适用于 PreferenceScreen 的直接子项。如果中间有 PreferenceCategory,则需要从其父 PreferenceCategory 中删除首选项,而不是 PreferenceScreen。首先确保 PreferenceCategory 在 XML 文件中设置了 android:key 属性。那么:

Preference somePreference = findPreference(SOME_PREFERENCE_KEY);
PreferenceCategory preferenceCategory = (PreferenceCategory) findPreference(SOME_PREFERENCE_CATEGORY_KEY);
preferenceCategory.removePreference(somePreference);

和:

preferenceCategory.addPreference(somePreference);

关于android - 如何在 Android 上动态显示和隐藏首选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703535/

相关文章:

android - getActionBar().setDisplayHomeAsUpEnabled(true); preferenceActivity 中的空指针

android - 如何将 "long click listener"添加到首选项?

java - C 和 Java 如何将函数定义分开,而不是 new OnClickHandler(){

java - println 在 android 中需要一条消息

android - 不是从 Activity 中调用 PICK_CONTACT Intent

android - 以编程方式创建布局首选项

android - 当我将 "json"作为扩展名传递时,getMimeTypeFromExtension 返回 null

android - 无法在 Mapbox 中创建自定义标记图标

Android:SharedPreference:启动时未设置默认值

android - PreferenceActivity 错误 : doesn't show selected option after close Activity