Android的设置界面实现比较简单,有时甚至只需要使用一个简单的xml文件即可.声明简单,但是如何从PreferenceScreen或者PreferenceCategory中删除一个Preference > <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="root" android:title="Auto Clear Cache" android:summary="Enable Auto Clear Cache " /> </PreferenceScreen 删除Preference 删除key为rmcache的Preference,这个Preference是PreferenceScreen root的子节点. 1 2 3 PreferenceScreen screen.findPreference("holo_theme"); screen.removePreference(holoCheckboxPref); PreferenceGroup删除实现,其实PreferenceScreen
PreferenceActivity和普通的Activity不同,他们不使用setContentView加载布局,而是加载选项设置布局,而选择设置布局是以PreferenceScreen作为根元素的xml preferenceScreen, Preference preference) { if ("select_linkage".equals(preference.getKey())) { /> </PreferenceScreen> </PreferenceCategory> <! 而<PreferenceScreen>中的Intent加载链接、拨打电话、发送短信等等,只要有对应的Intent的,都可以进行操作。 (3)我们在接着往下分析: <! /> </PreferenceScreen> </PreferenceCategory> <PreferenceCategory>中包含一个<PreferenceScreen>,通过这样的关系可以打开一个新的页面
选项设置布局文件以PreferenceScreen作为根元素来表示定义一个参数设置界面布局。 > 20 </CheckBoxPreference> 21 </PreferenceScreen> 22 23 <PreferenceScreen 24 xmlns:android="http://schemas.android.com > 38 </CheckBoxPreference> 39 </PreferenceScreen> 40 41 </PreferenceScreen> 运行效果如下: 点击上方第一个preference > 上方代码中,PreferenceScreen为根标签,ListPreference为子标签。 运行程序效果如下: 六、监听事件onPreferenceTreeClick()方法: public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen
PreferenceScreen : 所有Preference元素的根节点。 一般布局直接使用Preference的控件 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"><PreferenceScreen > 2 自定义布局 主要是借助Preference组件提供属性android:layout Preference.xml: <PreferenceScreen xmlns:android 在PreferenceActivity方法中,一个比较重要的监听点击事件方法为: booleanon PreferenceTreeClick (PreferenceScreen preferenceScreen 4 启动一个新的Activity Preferencescreen,不仅可以作为设置界面显示,而且还能够启动activity,下面主要是对启动activity的介绍 Preferencescreen
extends PreferenceFragment { // 监听 Preference Click @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { Log.i(“INFO”, preference.getKey()); // 也可以通过 KEY 获取 // child_checkbox_preference.isChecked()), Toast.LENGTH_SHORT).show(); } return super.onPreferenceTreeClick(preferenceScreen EvolverPreference extends PreferenceFragment { // 标签 private static final String TAG = “EvolverPreference”; // PreferenceScreen PreferenceScreen evolver_screen_preference = null; // Handler 消息处理 private Handler handler = new Handler
The root element should be a PreferenceScreen. As mentioned above, subsequent PreferenceScreen in the hierarchy will result in the screen break. To specify an object hierarchy rooted with PreferenceScreen, use setPreferenceScreen(PreferenceScreen 首先来看看Preference的xml文件preference.xml: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/ -- This PreferenceScreen tag serves as a screen break (similar to page break in word processing).
> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <CheckBoxPreference android:key="username" android:title="@string/username_label" /> <PreferenceScreen android:key="stayAwake" android:title="@string/wakelock_label" /> </PreferenceScreen android:key="help" android:title="@string/help_label" /> </PreferenceCategory> </PreferenceScreen
您通常只需一个文件,因为层次结构中的分支(可打开各自的设置列表)是使用 PreferenceScreen 的嵌套实例声明的。 XML 文件的根节点必须是一个 PreferenceScreen 元素。 </PreferenceScreen> 使用子屏幕 若要将设置组放入子屏幕(如图所示),请将 Preference 对象组放入 PreferenceScreen 内。 设置子屏幕。 <PreferenceScreen> 元素创建的项目选中后,即会打开一个单独的列表来显示嵌套设置。 </PreferenceScreen> ... ** 在开发针对 Android 3.0 及更高版本**的此类设计时,您应该使用“标头”功能,而非使用嵌套的 PreferenceScreen 元素构建子屏幕。
return super.onOptionsItemSelected(item); } } 新建xml文件 在res文件夹目录下新建xml文件夹,在xml文件夹新建pref_general.xml <PreferenceScreen android:positiveButtonText="@null" android:title="@string/pref_title_add_friends_to_messages" /> </PreferenceScreen > PreferenceScreen:根标签。 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <! string/pref_title_mqtt_pswd" android:summary="@string/pref_defult_mqtt_pswd" /> </PreferenceCategory> </PreferenceScreen
commentBox PreferenceActivity创建和使用比较复杂,Android官方现在不建议使用了,使用Preference和fragment的结合更加便利地写出一个settings页面,下面来介绍PreferenceScreen 下面正式开始 1:文件的结构是:一个MainActivity,一个对应layout布局,一个可引入的XML碎片布局 2.具体内容 2.1 【settingsfragment.xml 】 一个布局碎片 使用<PreferenceScreen > <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <Preference title="非wifi下加载图片"/> <Preference android:key="about" android:title="关于"/> </PreferenceScreen
android的Setting往往用PreferenceActivity来写的 我们在建立layout文件: <PreferenceScreen xmlns:android="http://schemas.android.com android:entryValues="@array/entry_value" android:title="mutiTitle" /> </PreferenceCategory> </PreferenceScreen
res目录下创建一个xml子目录,建立preference_setting.xml <PreferenceScreen xmlns:android="http://schemas.android.com "individual_name" android:summary="请输入真实姓名" android:title="姓名" /> <PreferenceScreen ="mobile" android:summary="请输入真实的手机号" android:title="手机" /> PreferenceScreen android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceScreen findPreference("individual_name").isEnabled()); } return super.onPreferenceTreeClick(preferenceScreen
> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceScreen android next_screen_checkbox_preference" android:summary="@string/checkbox_summary" android:title="@string/checkbox_title" /> </PreferenceScreen string/list_summary" android:title="@string/list_title" > </ListPreference> </PreferenceCategory> </PreferenceScreen
android:accountPreferences属性指向一个 首选项屏幕设置的xml配置文件 (PreferenceScreen xml ),它包含了一个PreferenceScreen 的列表,可以层级嵌套 示例如下: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="@string/title_fmt" /> <PreferenceScreen android:key="key1" android:title= android:targetPackage="key1.package" android:targetClass="key1.class" /> </PreferenceScreen > </PreferenceScreen> 一些抽象方法的标准实现模式,像下面这样: 如果为 认证器 提供的参数是足够的,到达了完全的满意,这时将会这样做(will do so )并且返回一个包含了结果的
android:title : 每个Preference在PreferenceScreen布局上显示的标题——大标题 android:summary : 每个Preference在PreferenceScreen
代码是很简单的,只需要addPreferencesFromResource(R.xml.preferences);这个设置显示界面就可以了, 界面代码res/xml/preferences.xml: <PreferenceScreen sort_names" android:entryValues="@array/sort_clauses" android:dialogTitle="Choose a sort order" /> </PreferenceScreen > 整个界面是一个PreferenceScreen,第二行,是一个ListPreference,key就相当于id,也是键值对的key,实际存储之后就是一个键值对的键,在前面的initList里面 model
) PreferenceCategory → 标题分组 自定义的 com.android.settings.widget.ValidatedEditTextPreference 等 示例结构:<PreferenceScreen android:key="wifi_switch" android:title="启用Wi-Fi" android:defaultValue="true" /></PreferenceScreen
第二:格式,PreferenceScreen为根标签,ListPreference为子标签 第三:标签属性含义 android:key 唯一标识符,和android:id相类似,PreferenceManager entryValues 与android:entries相对应的值 android:defaultValue 当对应值不存在时的默认值 android:dialogTitle 弹出的对话框中的标题信息 --> <PreferenceScreen android:dialogTitle="dialogTitle" android:defaultValue="@array/list_entries_value2" ></ListPreference> </PreferenceScreen
><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="标题" > summary="编辑您的姓名" android:title="编辑" > </EditTextPreference> </PreferenceCategory></PreferenceScreen
用起来挺方便就是有内存泄漏- - Android-SpinKit:集成多种动画效果的Drawable,之前有看源码觉得代码封装得挺好,动画不仅仅只能用在View上 filepicker:这个是用来处理PreferenceScreen 的文件选中库,PreferenceScreen感觉平时不怎么看到使用,用法到时挺特别 Tinker:微信Android热补丁方案,功能强大,和其它热修补方案对比看这里wiki DragSlopLayout