移除Setting中不需要的原生功能节点方法分享

原生Setting的界面是使用Preference而不是View来创建的,同时需要特殊的Activity或者Fragment的子类来显示: 如:PreferenceFragment和PreferenceActivity

原生的Setting应用所包含的功能比较全面,但通常开发中总是遇到需要裁剪和定制原生应用的需求,定制需求各有不同,刚接触这类需求时,可能第一时间想到的是屏蔽UI,但在Preference没有类似View那样好用的隐藏方法,这里介绍一下如何删除不需要的功能及子功能。

getPreferenceScreen().removePreference(findPreference("_key"));//删除整个一级节点((PreferenceGroup)findPreference("_key")).removeAll();//删除该节点下的全部子节点,并保留该节点((PreferenceGroup)findPreference("_key")).removePreference(findPreference("_key2"));//删除二级子节点

示例代码:版本Android P
main\res\xml\wifi_setting.xml wifi设置界面

<PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"xmlns:settings="http://schemas.android.com/apk/res-auto"android:title="@string/wifi_settings"settings:keywords="@string/keywords_wifi"><PreferenceCategoryandroid:key="connected_access_point"android:layout="@layout/preference_category_no_label"/><PreferenceCategoryandroid:key="access_points"android:layout="@layout/preference_category_no_label"/><PreferenceCategoryandroid:key="additional_settings"android:layout="@layout/preference_category_no_label"><Preferenceandroid:key="configure_settings"android:title="@string/wifi_configure_settings_preference_title"android:fragment="com.android.settings.wifi.ConfigureWifiSettings" /><Preferenceandroid:key="saved_networks"android:title="@string/wifi_saved_access_points_label"android:fragment="com.android.settings.wifi.SavedAccessPointsWifiSettings" /></PreferenceCategory>
</PreferenceScreen>

main\com\android\settings\wifi\WifiSettings.java wifi设置界面对应java文件

...
@Overridepublic void onCreate(Bundle icicle) {super.onCreate(icicle);// TODO(b/37429702): Add animations and preference comparator back after initial screen is// loaded (ODR).setAnimationAllowed(false);addPreferences();mIsRestricted = isUiRestricted();/*** daipi add 删除功能节点*/getPreferenceScreen().removePreference(findPreference("additional_settings"));}private void addPreferences() {addPreferencesFromResource(R.xml.wifi_settings);mConnectedAccessPointPreferenceCategory =(PreferenceCategory) findPreference(PREF_KEY_CONNECTED_ACCESS_POINTS);mAccessPointsPreferenceCategory =(PreferenceCategory) findPreference(PREF_KEY_ACCESS_POINTS);mAdditionalSettingsPreferenceCategory =(PreferenceCategory) findPreference(PREF_KEY_ADDITIONAL_SETTINGS);mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_WIFI_SETTINGS);mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS);Context prefContext = getPrefContext();mAddPreference = new Preference(prefContext);mAddPreference.setIcon(R.drawable.ic_menu_add_inset);mAddPreference.setTitle(R.string.wifi_add_network);mStatusMessagePreference = new LinkablePreference(prefContext);mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager());}...

如示例中删除功能节点注释处的代码,在原生代码添加功能节点后,删除了wifi界面的一个子功能项。

以上就是删除Preference功能节点的方法,其他功能界面同样找到不需要的功能key,按上述方法删除即可。

删除原生Setting中无用的功能(移除Preference)相关推荐

  1. 【91xcz】删除Windows 8中无用的网络连接

    在使用Windows 8的过程中,有时会重复添加网络连接,虽然不影响正常使用,但是一长串无用的连接看起来很不顺眼.另外,一些默认的网络名称(如"网络 2"),既不直观也不好听.但是 ...

  2. 如何删除Apple Music中的连接功能

    Love Apple Music, but tired of the intrusive Connect feature taking up space on your favorite artist ...

  3. 如何移除项目中无用的 console.log 代码

    大家好,我是若川.早些天时,我看到一个后端公众号发<辞退了一个前端>,当时还想着现在后端公众号都开始吊打前端了嘛.其中有个理由就是线上还一堆console.log...我猜很多人都会移除项 ...

  4. lamuda表达式 list移除空元素_Lambda 表达式遍历集合时用remove方法删除list集合中满足条件的元素问题...

    一:循环遍历list集合的四种方式 简单for循环 iterator循环 增加for循环 Lanbda表达式 二:四种遍历方式的用法示例 //简单for循环 List fileList = new A ...

  5. c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...

    ❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...

  6. 程序的Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符

    数组:编写一个函数Squeeze(char s[],char c).函数功能:删除字符数组s中出现的与变量c相同的字符. 程序的Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符. * ...

  7. 【第48天】AJAX在原生JS中的使用,处理XML数据以及DBUtils的使用,假删除(标记删除)

    1 介绍 1.1 同步和异步 1.1.1 基于AJAX的异步传输与传统同步传输的对比 1.1.2 使用时间线表示同步和异步在过程上的区别 1.2 JS与AJAX的关系 1.3 AJAX用到的技术 1. ...

  8. 【数据结构与算法】之深入解析“删除有序数组中的重复项”与“移除元素”的求解思路与算法示例

    删除有序数组中的重复项 一.题目要求 给你一个升序排列的数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度.元素的相对顺序应该保持 一致 . 由于在某些语言中不 ...

  9. Android 8.0学习(31)---Android 8.0 中的 ART 功能改进

    Android 8.0 中的 ART 功能改进 在 Android 8.0 版本中,Android Runtime (ART) 有了极大改进.下面的列表总结了设备制造商可以在 ART 中获得的增强功能 ...

最新文章

  1. Eclipse进行可视化的GUI开发3大GUI插件
  2. 国内首家智能心电SaaS平台“琅瑞医疗”获Pre-A轮融资,磐霖资本主投...
  3. VTK:PolyData之HighlightBadCells
  4. @1.0.0 dev: `webpack-dev-server --inline --progress --config
  5. leetcode 330. 按要求补齐数组(贪心算法)
  6. 【最新教程】Pytorch还是Tensorflow超强两大框架实战
  7. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_5_文件存储的原理和记事本打开文本显示原理...
  8. 2018 年寒假/春节,来蓝鲸玩吧!
  9. centos 的 tar 命令
  10. c++实验题:设计两个酒店管理员客房管理的类:一个是Person类,要求储存房号、客户姓名和身份证号的信息;另一个类是Client类,要求新增客户的订房、退房和消费金额等信息,并给出相关测试算法。
  11. 玩游戏计算机虚拟内存怎么设置,多少虚拟内存设置适合玩游戏(多少虚拟内存设置适合)...
  12. linux扩展模式触摸屏,Ubuntu14.04下使用触摸屏以及笔记本扩展触摸屏设置方法
  13. TreeGrid(树形表格)
  14. 阿里云牵手行业龙头香港快运航空,支持特区数字化升级
  15. 派森编程软件python有什么用_派森Python下载
  16. 基于PHP大学生英语在线教学网
  17. java 系统资源不足_[InteliJ IDEA] 系统资源不足
  18. Python基础:实现猜拳游戏(简单版)
  19. 强化学习——探索与利用基本方法
  20. python openpyxl load_workbook报AttributeError: 'MergedCell' object attribute 'hyperlink' is read-only

热门文章

  1. python tkinter 小部件汇总
  2. 作物叶片病害识别系统
  3. pickle模块 python_Python之Pickle模块
  4. 利用Photoshop CS4替换登记照的背景颜色
  5. 色谱级免疫球蛋白——人IgG全分子相关研究
  6. HTTP常见错误代码说明
  7. JAVA中API和SPI的区别
  8. java垃圾回收器之跟搜索算法
  9. scrapy爬虫之抓取京东机械键盘评论量并画图展示
  10. iT人家喜迎2010中秋佳节“祝福有礼”活动!