Android 之Preference控件基本使用示例详解
作者:花落归零 发布时间:2022-10-20 23:42:34
简述
Preference是Android的控件之一,相对来说我们用的比较少,但在系统应用的Settings设置应用模块中大部分由Preference控件组成。
主要成分
Preference主要角色是子控件,PreferenceCategory相当于LinearLayout和Relative layout,一般进行Preferenc分类组合,设置不同小标题。PreferenceCategory是所用preference元素的根结点。 preference主要属性:
android:key :唯一标识,可根据key获取到相关preference控件;
android:title : 标题;
android: summary : 副标题小文本;
android: icon: Preference的icon;
android: fragment : preference对应的fragment页面;
android:persistent : 是否可持久化,是否保活;
android:layout: 设置自定义布局;
主要方法
addPreferencesFromResource(R.xml.xxx):绑定布局,可在onCreate()方法中调用;
findPreference(CharSequence key): 根据key值查询preference;
setOnPreferenceClickListener(new OnPreferenceClickListener(){...}):preference点击事件监听;
getPreferenceScreen(): 获取当前布局的父布局;
getPreferenceScreen().removePreference() : 动态移除某个preference控件;
addPreference(Preference preference): 动态添加preference控件,通过PreferenceGroup对象动态添加preference;
基本示例
1.编写xml布局:res/xml/test_preference.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/display_settings"
settings:keywords="@string/keywords_display">
<PreferenceCategory
android:key="phone_category"
android:title="我的手机">
<Preference
android:key="phone"
android:summary="关于手机"
android:title="小米" />
<Preference
android:key="phone_status"
android:title="状态信息" />
</PreferenceCategory>
<PreferenceCategory
android:key="other_category"
android:title="其他">
<SwitchPreference
android:key="permission"
android:summary="位置权限,定位获取位置信息"
android:title="权限" />
</PreferenceCategory>
<PreferenceScreen
android:fragment="com.android.settings.accessibility.ToggleFontSizePreferenceFragment"
android:key="font_size"
android:title="@string/title_font_size"
settings:keywords="@string/keywords_display_font_size" />
</PreferenceScreen>
2.activity进行布局绑定
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.display_settings);
}
效果图:
3.动态添加preference控件
PreferenceGroup preferenceScreen = getPreferenceScreen();
PreferenceCategory webCategory =
new PreferenceCategory(getPrefContext());
webCategory.setTitle(R.string.web_action_section_title);
preferenceScreen.addPreference(webCategory);
// toggle to enable / disable Web
mWeb = new SwitchPreference(getPrefContext());
mWeb.setTitle(R.string.web_action_enable_title);
mWeb.setSummary(R.string.web_action_enable_summary);
mWeb.setChecked(Settings.Secure.getInt(getContentResolver(),
Settings.Secure.WEB_ACTION_ENABLED, 1) != 0);
mWebn.setOnPreferenceChangeListener(this);
webCategory.addPreference(mWeb);
// list to manage link handling per app
PreferenceGroup mDomainAppList = new PreferenceCategory(getPrefContext());
mDomainAppList.setTitle(R.string.domain_url_section_title);
preferenceScreen.addPreference(mDomainAppList);
有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
来源:https://juejin.cn/post/7179507646980948023


猜你喜欢
- 概述在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手
- Java序列化JSON时long型数值,会出现精度丢失的问题。原因:java中得long能表示的范围比js中number大,也就意味着部分数
- 1、题目给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:提示:你可以假设 k 总是有效的,在输入数组不为空
- 网上的教程大都是手动通过protoc编译, 比较难用给当前工程添加"Google.Protobuf"和"Grp
- 本文实例为大家分享了Android联系人字母排序的具体代码,供大家参考,具体内容如下实现思路:首先说下布局,整个是一个相对布局,最下面是一个
- 从左到右 A B C 柱 大盘子在下, 小盘子在上, 借助B柱将所有盘子从A柱移动到C柱, 期间只有一个原则: 大盘
- 本文实例讲述了Java利用反射自动封装成实体对象的方法。分享给大家供大家参考。具体分析如下:利用此方法的时候需要传递的参数的名称,必须以行号
- SpringBoot遇到的坑@Qualifier报红今天写项目的时候@Qualifier一直报红,排查半天后面才知道原来是idea生成项目的
- 正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径,即相对于当前类的路径。在本地工程和服务
- 手写一个通用加载中、显示数据、加载失败、空数据的LoadingView框架。定义3个布局:加载中,加载失败,空数据加载中:<?xml
- 1、引入依赖<dependency> <groupId>org.apache.pdfbox</gr
- 最近在学习AngularJS的知识,收获不少,不过因为自己平时工作时开发都是用的freemarker+springmvc来做的页面数据交互,
- 模板消息文档公众号的类型分为服务号、订阅号和企业号,其中服务号和订阅号比较常见。要想实现公众号推动消息给指定的用户,其类型必须为服务号。推送
- 在项目中,时常会有异步调用的需求web.xml配置<servlet> <description>spri
- MainActivity如下:package cc.ab;import android.os.Bundle;import android.p
- log4j2支持日志的异步打印,日志异步输出的好处在于,使用单独的进程来执行日志打印的功能,可以提高日志执行效率,减少日志功能对正常业务的影
- Android 6.0版本对于程序员兄弟来说最不友好的就是权限的问题,动态权限的设置曾经让我很苦恼,目前大部分关于6.0权限设置的框架基本都
- 最近做了微信公众号支付的开发,由于是第一次做也摸索了几天的时间,也只是达到了实现功能的水平,并没有太多考虑到性能问题,所以这篇文章比较适合初
- 本文实例为大家分享了Android实现类似微信视频接听的具体代码,供大家参考,具体内容如下1、背景需求:业务需要接入视频审核功能,在PC 端
- 同类型对象的比较三个维度去比较同一性相等性相似性样例引入想象一下这样的一个场景:小王去图书馆借了一本java核心技术卷1,如图不幸的是小王把