隐藏Settings中的Preference笔记

Android 3xcn.com@站长2019年3月14日 pm7:05发布5年前 (2019)更新
0
导航号,我的单页导航


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.91es.com  125啦读书导航,为你导航!

版权声明 1、 本站名称 91易搜
2、 本站网址 https://www.91es.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权请留言
4、 本站禁止发布或转载任何违法的相关信息,如有发现请向站长举报
导航号,我的单页导航

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...