Android项目开发中,客户要求精简Settings,也就是删除部分不需要或者无用的功能,因此需要影藏Preference等,下面是摘抄网友并自己加工整理的。

隐藏 Preference 有两种方法:

一、先在xml布局里面删,然后在java里面删掉调用的相关部分,但如果很多地方都有调用,那么删除就很麻烦;

二、用removePreference(Preference preference) 方法 删除;

由于第一种方式可能涉及的代码量多也容易引入新bug,因此个人推荐使用第二种方式,简单,快捷,安全。

比如Settings中的privacy_settings.xml

<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
    android:title="@string/privacy_settings_title">

    <!-- Backup settings -->
    <PreferenceScreen
        android:key="backup_data"
        android:title="@string/backup_data_title"
        android:persistent="false"
        android:fragment="com.android.settings.backup.ToggleBackupSettingFragment"/>

    <PreferenceScreen
        android:key="configure_account"
        android:title="@string/backup_configure_account_title"
        android:persistent="false">
        <!-- the Intent declared here is always overwritten by a real one -->
        <intent android:action="dummy" />
    </PreferenceScreen>

    <SwitchPreference
        android:key="auto_restore"
        android:title="@string/auto_restore_title"
        android:summary="@string/auto_restore_summary"
        android:persistent="false" />

    <Preference
        android:key="backup_inactive"
        android:title="@string/backup_inactive_title"
        android:persistent="false"
        android:enabled="false"
        android:selectable="false" />

    <!-- Network reset -->
    <PreferenceScreen
        android:key="network_reset"
        android:title="@string/reset_network_title"
        settings:keywords="@string/keywords_network_reset"
        android:fragment="com.android.settings.ResetNetwork" />

<!--M: add DRM Settings start-->
<PreferenceScreen
        android:key="drm_settings"
        android:title="@string/drm_settings_title"
        android:summary="@string/drm_settings_summary"
        android:fragment="com.mediatek.settings.DrmSettings"/>
<!--M: add DRM Settings end-->

    <!-- Factory reset -->
    <PreferenceScreen
        android:key="factory_reset"
        android:title="@string/master_clear_title"
        settings:keywords="@string/keywords_factory_data_reset"
        android:fragment="com.android.settings.MasterClear" />

</PreferenceScreen>

这个部分就是Android 重置部分,显示有[网络重置]和[恢复出厂设置]等,现在项目中要求我影藏[网络重置]这个选项。

下面是我实际中设计的代码:

private static final String NETWORK_RESET = "network_reset";

//在onCreate()方法中调用

//只删除network_reset这个选项
final PreferenceScreen screen = getPreferenceScreen();
screen.removePreference((PreferenceScreen) screen.findPreference(NETWORK_RESET));

//删除此父选项中的所有子选项,比如network_reset和factory_reset等
screen.removeAll();

本文参考《隐藏(删除) Preference 小结

https://www.biumall.com/  笔友城堡,为你导航!

相关文章

暂无评论

none
暂无评论...