删除原生Setting中无用的功能(移除Preference)
移除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)相关推荐
- 【91xcz】删除Windows 8中无用的网络连接
在使用Windows 8的过程中,有时会重复添加网络连接,虽然不影响正常使用,但是一长串无用的连接看起来很不顺眼.另外,一些默认的网络名称(如"网络 2"),既不直观也不好听.但是 ...
- 如何删除Apple Music中的连接功能
Love Apple Music, but tired of the intrusive Connect feature taking up space on your favorite artist ...
- 如何移除项目中无用的 console.log 代码
大家好,我是若川.早些天时,我看到一个后端公众号发<辞退了一个前端>,当时还想着现在后端公众号都开始吊打前端了嘛.其中有个理由就是线上还一堆console.log...我猜很多人都会移除项 ...
- lamuda表达式 list移除空元素_Lambda 表达式遍历集合时用remove方法删除list集合中满足条件的元素问题...
一:循环遍历list集合的四种方式 简单for循环 iterator循环 增加for循环 Lanbda表达式 二:四种遍历方式的用法示例 //简单for循环 List fileList = new A ...
- c++两个数组对比去掉重复的元素_每日一道 LeetCode (8):删除排序数组中的重复项和移除元素...
❝ 每天 3 分钟,走上算法的逆袭之路. ❞ 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub:https://github.com/meteor1993/LeetCode Gi ...
- 程序的Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符
数组:编写一个函数Squeeze(char s[],char c).函数功能:删除字符数组s中出现的与变量c相同的字符. 程序的Squeeze函数的功能是删除字符串s中所出现的与变量c相同的字符. * ...
- 【第48天】AJAX在原生JS中的使用,处理XML数据以及DBUtils的使用,假删除(标记删除)
1 介绍 1.1 同步和异步 1.1.1 基于AJAX的异步传输与传统同步传输的对比 1.1.2 使用时间线表示同步和异步在过程上的区别 1.2 JS与AJAX的关系 1.3 AJAX用到的技术 1. ...
- 【数据结构与算法】之深入解析“删除有序数组中的重复项”与“移除元素”的求解思路与算法示例
删除有序数组中的重复项 一.题目要求 给你一个升序排列的数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度.元素的相对顺序应该保持 一致 . 由于在某些语言中不 ...
- Android 8.0学习(31)---Android 8.0 中的 ART 功能改进
Android 8.0 中的 ART 功能改进 在 Android 8.0 版本中,Android Runtime (ART) 有了极大改进.下面的列表总结了设备制造商可以在 ART 中获得的增强功能 ...
最新文章
- Eclipse进行可视化的GUI开发3大GUI插件
- 国内首家智能心电SaaS平台“琅瑞医疗”获Pre-A轮融资,磐霖资本主投...
- VTK:PolyData之HighlightBadCells
- @1.0.0 dev: `webpack-dev-server --inline --progress --config
- leetcode 330. 按要求补齐数组(贪心算法)
- 【最新教程】Pytorch还是Tensorflow超强两大框架实战
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_04 IO字节流_5_文件存储的原理和记事本打开文本显示原理...
- 2018 年寒假/春节,来蓝鲸玩吧!
- centos 的 tar 命令
- c++实验题:设计两个酒店管理员客房管理的类:一个是Person类,要求储存房号、客户姓名和身份证号的信息;另一个类是Client类,要求新增客户的订房、退房和消费金额等信息,并给出相关测试算法。
- 玩游戏计算机虚拟内存怎么设置,多少虚拟内存设置适合玩游戏(多少虚拟内存设置适合)...
- linux扩展模式触摸屏,Ubuntu14.04下使用触摸屏以及笔记本扩展触摸屏设置方法
- TreeGrid(树形表格)
- 阿里云牵手行业龙头香港快运航空,支持特区数字化升级
- 派森编程软件python有什么用_派森Python下载
- 基于PHP大学生英语在线教学网
- java 系统资源不足_[InteliJ IDEA] 系统资源不足
- Python基础:实现猜拳游戏(简单版)
- 强化学习——探索与利用基本方法
- python openpyxl load_workbook报AttributeError: 'MergedCell' object attribute 'hyperlink' is read-only