PreferenceScreen preference是偏好,首选的意思,PreferenceScreen个人翻译成 “偏好显示”,明白这个意思就好,就是说根据特点灵活的定义显示内容风格,一个屏幕可以包含多个风格,像系统自带的声音设置界面。


 
实现这种显示效果其实很简单,只需要借助PreferenceScreen类即可。在项目资源文件中新建xml文件夹,在里面新建preferences.xml文件. 
根元素为PreferenceScreen 代表显示一整个屏幕,内部嵌套PreferenceCategory标签,表示偏好类别,在PreferenceCategory标签内部可以随便存放复选框,输入框,列表等显示控件.可包含的控件内容在android.preference包下可查阅.xml文件编写好后,需要加载到activity中,对于偏好显示的xml加载,可以使用PreferenceActivity中的addPreferencesFromResource(),所以Activity需要继承PreferenceActivity.既然显示的屏幕中包含复选框,输入框的控件,我们必然对选择与否,输入框内容感兴趣,我们要怎样获取屏幕的内容呢? 
复写activity中的onPreferenceTreeClick 方法,在对屏幕显示的内容进行操作时,会触发此方法,在方法内部通过调用

Java代码  
  1. SharedPreferences contentPreference = preference.getSharedPreferences();
  2. boolean checkbox_toggle = contentPreference.getBoolean("checkbox_preference", false);
  3. String animalName = contentPreference.getString("edittext_preference", "default");

即可得到屏幕上输入的内容,与使用SharedPreference对象一样,通过key-value 的形式获取,其中key是xml控件标签中key属性对应的值. 
显示效果: 
 
对应xml文件:

Java代码  
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreenxmlns:android="http://schemas.android.com/apk/res/android"><PreferenceCategoryandroid:title="显示一排偏好"><CheckBoxPreferenceandroid:key="checkbox_preference"android:title="开关偏好"android:summary="这是一个开关按钮" /></PreferenceCategory><PreferenceCategoryandroid:title="基于对话框的偏好"><EditTextPreferenceandroid:key="edittext_preference"android:title="文本输入偏好"android:summary="使用一个文本框对话框"android:dialogTitle="输入你的宠物" /><ListPreferenceandroid:key="list_preference"android:title="列表偏好"android:summary="使用一个列表对话框"android:entries="@array/entries_list_preference"android:entryValues="@array/entryvalues_list_preference"android:dialogTitle="选择一个" /></PreferenceCategory><PreferenceCategoryandroid:title="启动偏好"><PreferenceScreenandroid:key="screen_preference"android:title="屏幕"android:summary="显示另一个偏好屏幕"><!-- You can place more preferences here that will be shown on the next screen. --><CheckBoxPreferenceandroid:key="next_screen_checkbox_preference"android:title="开关偏好"android:summary="另一个屏幕上的偏好" /></PreferenceScreen><PreferenceScreenandroid:title="意图偏好"android:summary="通过意图启动一个Activity"><intent android:action="android.intent.action.VIEW"android:data="http://www.android.com" /></PreferenceScreen></PreferenceCategory><PreferenceCategoryandroid:title="偏好属性"><CheckBoxPreferenceandroid:key="parent_checkbox_preference"android:title="父开关"android:summary="这是一个父开关" /><CheckBoxPreferenceandroid:key="child_checkbox_preference"android:dependency="parent_checkbox_preference"android:layout="?android:attr/preferenceLayoutChild"android:title="子开关"android:summary="这是一个子开关" /></PreferenceCategory>
</PreferenceScreen>

转载于:https://www.cnblogs.com/songxingzhu/p/4505167.html

android中PreferenceScreen类的用法相关推荐

  1. android服务绑定异步,Android中异步类AsyncTask用法总结

    本文总结分析了Android中异步类AsyncTask用法.分享给大家供大家参考,具体如下: 最近整理笔记的时候,看到有关AsyncTask不是很理解,重新疏导了一下,有在网上找了一些资料,个人不敢独 ...

  2. Android中Calendar类的用法总结

    Calendar是Android开发中需要获取时间时必不可少的一个工具类,通过这个类可以获得的时间信息还是很丰富的,下面做一个总结,以后使用的时候就不用总是去翻书或者查资料了. 在获取时间之前要先获得 ...

  3. android日历总结,Android中Calendar类的用法总结

    Calendar是Android开发中需要获取时间时必不可少的一个工具类,通过这个类可以获得的时间信息还是很丰富的,下面做一个总结,以后使用的时候就不用总是去翻书或者查资料了. 在获取时间之前要先获得 ...

  4. Android中各种Span的用法——转载

    转载一篇觉得很好的文章,在转载中成长:https://blog.csdn.net/qq_16430735/article/details/50427978 Android中各种Span的用法 前言 S ...

  5. 49.Android中各种Span的用法

    49.Android中各种Span的用法 Android中各种Span的用法 前言 SpannableStringBuilder URLSpan UnderlineSpan TypefaceSpan ...

  6. C#中timer类的用法

    C#中timer类的用法 关于C#中timer类  在C#里关于定时器类就有3个   1.定义在System.Windows.Forms里   2.定义在System.Threading.Timer类 ...

  7. Android中Application类用法

    Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系 ...

  8. Android中Cursor类的概念和用法

    使用过 SQLite数据库的童鞋对 Cursor 应该不陌生,加深自己和大家对Android 中使用 Cursor 的理解. 关于 Cursor 在你理解和使用 Android Cursor 的时候你 ...

  9. java中日历类的用法_java日期类的用法

    java日期类的用法 不管你是处理财务交易还是计划着下一步的行动,你都要知道怎样在Java中建立,使用和显示日期.这需要你简单的查阅一下相应类的API参考:一个日期可以创建3个相关类的对象.这篇文章告 ...

最新文章

  1. 【图论专题】差分约束系统
  2. STM32 CJSON解析说明
  3. Keras与PyTorch全方位比较 哪一个深度学习框架更适合初学者?
  4. ES6(ECMAScript2015)/01/ES6简介
  5. 使用ISynchronizeInvoke无痛地创建线程安全用户界面
  6. SAP License:利润中心设计思路
  7. matlab逻辑电路图,基于.matlab的数字逻辑电路仿真.doc
  8. swing简单的打字游戏源码
  9. 交往了 19 年的兄弟,给我上了一课
  10. PE启动盘制作,电脑PE工具制作教程(可能是最详细的制作方法)小白推荐
  11. 虚拟机使用cheese调用摄像头黑屏问题解决
  12. js 验证身份证格式
  13. 2022年,来者犹可追
  14. 出差经历的人在囧途那一天
  15. Excel-利用函数获取工作表标签名称(转)
  16. PDF的页面方向倒了,怎么调整并保存
  17. 京东首页案例(流式布局)
  18. 为弹性云服务器申请和绑定弹性公网IP
  19. 【怎么卸载影子系统?卸载影子系统解决方法】
  20. 使用Dnsmasq搭建本地dns服务器上网

热门文章

  1. VBB with BIG DATABASE!
  2. jQuery Api 学习(六、jQuery 文档 - 操作文档)
  3. 【秋招】计算机视觉面试题
  4. java 读取 application配置文件信息
  5. 实习生不知道该如何安排了……
  6. java rtsp_rtsp网络协议的java实现
  7. Python ChatOps库:Opsdroid和Errbot
  8. vue实现图片滑动验证功能——功能实现
  9. 平安城市,天网工程,雪亮工程这三者的区别
  10. What is Deep Learning?(什么是深度学习?)