现在做公司任务的时候,经常会要去读Settings的源码,然后发现在xml文件中几乎全是用的preferenceScreen和preferenceCategory标签,很少有用布局和控件的,然后我就自己上网看了很多有关的资料,在此总结下。

首先在res目录下,新建一个命名为xml的文件夹,然后建立一个aaa.xml文件,选择resource标签。

先使用PreferenceCategory,代码如下

 <PreferenceCategory android:title="显示一排偏好" >
<CheckBoxPreference
android:key="checkbox_pre"
android:summary="这是一个开关按钮"
android:title="开关偏好" />
</PreferenceCategory>

效果图:

PreferenceCategory相当于分组,把同一类的选项放在同一块区域。

再来看看PreferenceScreen,代码如下

 <PreferenceScreen
android:key="screen_pre"
android:summary="显示另一个偏好屏幕"
android:title="屏幕" >
<CheckBoxPreference
android:key="next_screen_checkbox_pre"
android:summary="另一个屏幕上的偏好"
android:title="开关偏好" />
</PreferenceScreen>

如图,,然后发现没有checkbox显示

因为PreferenceScreen是可以点进去的,点击该选项,进入就可以看到checkbox了

然后看看ListPreference,一般都嵌在PreferenceScreen中使用,看起来比较舒服,代码如下

<PreferenceScreen android:title="基于对话框的偏好" >
<ListPreference
android:dialogTitle="选择一个"
android:entries="@array/auto_update_frequency_entry"
android:entryValues="@array/auto_update_frequency_value"
android:key="list_pre"
android:summary="使用一个列表对话框"
android:title="列表偏好" >
</ListPreference>
</PreferenceScreen>

点击该screen,listPreference会像dialog一样弹出来,如图

android:entries和android:entryValues两个属性的值来源:

在values目录下建立一个array.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="auto_update_frequency_entry">
<item >10分钟</item>
<item >30分钟</item>
<item >1小时</item>
<item >12小时</item>
<item >24小时</item>
</string-array>
<string-array name="auto_update_frequency_value">
<item >10</item>
<item >30</item>
<item >60</item>
<item >720</item>
<item >1440</item>
</string-array>
</resources>

目前大概就了解了这些,以后有什么再补充

Android中preference标签的使用的更多相关文章

  1. android中include标签使用详解

    android中include标签是为了便于控件的覆用的一个很好解决方案.   但是也有一些需要注意的地方,下面是本人在项目中碰到过的一个问题,做此记录,便于以后查看.   include标签用法. ...

  2. Android中Preference的使用以及监听事件分析

    在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局.当然,凡事都有 ...

  3. 【Android 界面效果25】android中include标签的使用

    在一个项目中我们可能会需要用到相同的布局设计,如果都写在一个xml文件中,代码显得很冗余,并且可读性也很差,所以我们可以把相同布局的代码单独写成一个模块,然后用到的时候可以通过<include ...

  4. 二十二、android中application标签说明

    <application> <applicationandroid:allowClearUserData=["true" | "false"] ...

  5. Android中include标签的使用(打开引用布局,隐藏当前布局)

    在开发app的时候,有时候一个布局会反复用到,可以把反复用到的布局单独写一个xml文件,什么时候用到就用includ标签引入xml 下面是我写的反复用到的一个xml,里面有2个button,一个Tex ...

  6. Android中<original-package>标签含义

    在AndroidManifest.xml中,<original-package>与<manifest package=...>中的区别:<original-package ...

  7. Android中include标签的使用

    在Android的开发中,我们知道布局文件可以让我们很方便的对各个UI控件进行位置安排跟属性设置,而在程序中可以直接取得控件并赋予对应操作功能.但是,如果是一个复杂的界面设计,我们把所有布局都放在一个 ...

  8. Android manifest文件中的标签详细介绍

    官方文档 概要 每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml.它包含了程序运行的一些必备信息,比如:--为Java应用程序指定一个独一无二的名字 ...

  9. Android 中的 WebView实现 Html5 标签网页加载

    自Android 4.4起,Android中的WebView开始基于Chromium(谷歌浏览器)支持浏览器的一系列功能,webkit解析网页各个节点,这个改变,使得WebView的性能大幅度提升,并 ...

随机推荐

  1. c# DataTable导出为excel

    /// <summary> /// 将DataTable导出为Excel文件(.xls) /// </summary> /// <param name="dt& ...

  2. (转)MapReduce Design Patterns(chapter 4 (part 2))(八)

    Binning Pattern Description 分箱模式,跟前面的类似,分类记录且不考虑记录的顺序. Intent 归档数据集中的每条记录到一个或多个类别. Motivation 分箱和分区很 ...

  3. 使用strdup 和 _strdup

    在重构旧的C代码里,使用了这个函数, pNew = new OBJECTDESC; sscanf(buf, "%x", &i); pNew->wObjectID = ...

  4. SQL基础四(例子)

    ------------------------------------------------ --分别创建student/course/score表 Create table student ( ...

  5. wireshark的提示

    内容:12个wrieshark的提示 1.[Packet size limited during capture] 在捕获数据包大小有限,即包没有抓全 2.[TCP previous segment ...

  6. python之List排序

    sorted() #coding:utf-8 #sorted Ascending 升序 L = [12,23,43,3,65,34,21,3645] print(sorted(L)) >> ...

  7. sudo 运行 npm或node时,出现找不到命令

    sudo 运行 npm或node时,出现找不到命令的情况,运行下面这些命令, sudo ln -s /usr/local/bin/node /usr/bin/node sudo ln -s /usr/ ...

  8. appium-java,连接真机启动微信

    1.启动appium 2.设置信息 3.设置IP和端口 4.appium连接手机,微信中打开debugx5.qq.com,信息->TBS settings->是否打开TBS内核Insper ...

  9. js缓动函数

    tween: { easeInQuad: function(pos){ return Math.pow(pos, 2); }, easeOutQuad: function(pos){ return - ...

  10. 字符串处理scanf("%d%*c",&n);

    "*"表示该输入项读入后不赋予任何变量,即跳过该输入值.这在减小内存开支上面还是有一点用处的,不需要的字符直接跳过,免得申请没用的变量空间 你的例子中的%*c的作用是读入'\n', ...