PreferenceScreen/ListPreference,移除/隐藏部分菜单。

来源:互联网 发布:火绒安全软件好用吗 编辑:程序博客网 时间:2024/06/14 02:14

在不大改代码引用的情况下,如何快速隐藏部分菜单,需要这样操作。
例如xml中的布局文件是这样:

<PreferenceScreen    xmlns:android="http://schemas.android.com/apk/res/android"    android:title="@string/english_ime_settings"    android:key="english_ime_settings">    <PreferenceCategory        android:title="@string/general_category"        android:key="general_settings">        <CheckBoxPreference            android:key="auto_cap"            android:title="@string/auto_cap"            android:summary="@string/auto_cap_summary"            android:persistent="true"            android:defaultValue="true" />        <CheckBoxPreference            android:key="vibrate_on"            android:title="@string/vibrate_on_keypress"            android:defaultValue="@bool/config_default_vibration_enabled"            android:persistent="true" />       <!-- <CheckBoxPreference            android:key="sound_on"            android:title="@string/sound_on_keypress"            android:defaultValue="@bool/config_default_sound_enabled"            android:persistent="false" /> -->        <CheckBoxPreference            android:key="popup_on"            android:title="@string/popup_on_keypress"            android:persistent="true"            android:defaultValue="@bool/config_default_popup_preview" />        <ListPreference            android:key="voice_mode"            android:title="@string/voice_input"            android:persistent="true"            android:entryValues="@array/voice_input_modes_values"            android:entries="@array/voice_input_modes"            android:defaultValue="@string/voice_mode_main" />    </PreferenceCategory>    </PreferenceScreen>

现在需要隐藏掉android:key=”general_settings”中所有子选项则使用如下语句:

final PreferenceGroup generalSettings =                (PreferenceGroup) findPreference("general_settings");                getPreferenceScreen().removePreference(generalSettings);

如果是隐藏general_settings中的部分子选项则使用如下方法:

general_settings.removePreference(findPreference("auto_cap"));