PreferenceFragment使用

PreferenceFragment使用PreferenceFr 引入在 Android3 0 之前 设置界面使用 PreferenceAc 在 Android3 0 之后 官方推荐使用 PreferenceFr 对应于碎片化技术 使用新建 Fragment 继承 PreferenceFr 加载选项配置 xml 文件 publicstatic

PreferenceFragment

在Android3.0之前,设置界面使用PreferenceActivity,在Android3.0之后,官方推荐使用PreferenceFragment,对应于碎片化技术。

使用

新建Fragment

新建GeneralPreferenceFragment 继承PreferenceFragment,加载选项配置xml文件。

public static class GeneralPreferenceFragment extends PreferenceFragment { 
    @Override public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref_general); setHasOptionsMenu(true); // Bind the summaries of EditText/List/Dialog/Ringtone preferences // to their values. When their values change, their summaries are // updated to reflect the new value, per the Android Design // guidelines. bindPreferenceSummaryToValue(findPreference("example_text")); bindPreferenceSummaryToValue(findPreference("example_list")); } @Override public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); if (id == android.R.id.home) { 
    startActivity(new Intent(getActivity(), SettingsActivity.class)); return true; } return super.onOptionsItemSelected(item); } } 

新建xml文件

在res文件夹目录下新建xml文件夹,在xml文件夹新建pref_general.xml

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <SwitchPreference android:defaultValue="true" android:key="example_switch" android:summary="@string/pref_description_social_recommendations" android:title="@string/pref_title_social_recommendations" />  
     
    <EditTextPreference android:capitalize="words" android:defaultValue="@string/pref_default_display_name" android:inputType="textCapWords" android:key="example_text" android:maxLines="1" android:selectAllOnFocus="true" android:singleLine="true" android:title="@string/pref_title_display_name" />  
     
    <ListPreference android:defaultValue="-1" android:entries="@array/pref_example_list_titles" android:entryValues="@array/pref_example_list_values" android:key="example_list" android:negativeButtonText="@null" android:positiveButtonText="@null" android:title="@string/pref_title_add_friends_to_messages" />  
     PreferenceScreen> 
  • PreferenceScreen:根标签。
  • SwitchPreference:开关标签
  • EditTextPreference:编辑标签
  • ListPreference:集合标签,多选一。

效果图

在这里插入图片描述

分类

使用PreferenceCategory标签进行分类。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">  
     
    <PreferenceCategory android:key="@string/pref_header_mqtt" android:summary="@string/pref_header_mqtt" android:title="@string/pref_header_mqtt"> <EditTextPreference android:capitalize="characters" android:defaultValue="@string/pref_defult_mqtt_ip" android:inputType="textCapWords" android:key="@string/pref_key_mqtt_ip" android:maxLines="1" android:selectAllOnFocus="true" android:singleLine="true" android:title="@string/pref_title_mqtt_ip" android:summary="@string/pref_defult_mqtt_ip" /> <EditTextPreference android:capitalize="characters" android:defaultValue="@string/pref_defult_mqtt_port" android:inputType="textCapWords" android:key="@string/pref_key_mqtt_port" android:maxLines="1" android:selectAllOnFocus="true" android:singleLine="true" android:title="@string/pref_title_mqtt_port" android:summary="@string/pref_defult_mqtt_port" /> <EditTextPreference android:capitalize="characters" android:defaultValue="@string/pref_defult_mqtt_topic" android:inputType="textCapWords" android:key="@string/pref_key_mqtt_topic" android:maxLines="1" android:selectAllOnFocus="true" android:singleLine="true" android:title="@string/pref_title_mqtt_topic" android:summary="@string/pref_defult_mqtt_topic" /> <EditTextPreference android:capitalize="characters" android:defaultValue="@string/pref_defult_mqtt_user" android:inputType="textCapWords" android:key="@string/pref_key_mqtt_user" android:maxLines="1" android:selectAllOnFocus="true" android:singleLine="true" android:title="@string/pref_title_mqtt_user" android:summary="@string/pref_defult_mqtt_user" /> <EditTextPreference android:capitalize="characters" android:defaultValue="@string/pref_defult_mqtt_pswd" android:inputType="textCapWords" android:key="@string/pref_key_mqtt_pswd" android:maxLines="1" android:selectAllOnFocus="true" android:singleLine="true" android:title="@string/pref_title_mqtt_pswd" android:summary="@string/pref_defult_mqtt_pswd" />  
     PreferenceCategory>  
      PreferenceScreen> 

使用Header跳转页面

使用preference-headers进行实现,在res/xml文件夹新建pref_headers.xml

<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">  
    <header android:fragment="com.pax.preference.SettingsActivity$GeneralPreferenceFragment" android:icon="@drawable/ic_info_black_24dp" android:title="@string/pref_header_general" /> <header android:fragment="com.pax.preference.SettingsActivity$NotificationPreferenceFragment" android:icon="@drawable/ic_notifications_black_24dp" android:title="@string/pref_header_notifications" /> <header android:fragment="com.pax.preference.SettingsActivity$DataSyncPreferenceFragment" android:icon="@drawable/ic_sync_black_24dp" android:title="@string/pref_header_data_sync" />  
     preference-headers> 

在Activity中设置xml

@Override @TargetApi(Build.VERSION_CODES.HONEYCOMB) public void onBuildHeaders(List<Header> target) { 
    loadHeadersFromResource(R.xml.pref_headers, target); } 

进行平板适配,这种方式可以适配平板显示。

private static boolean isXLargeTablet(Context context) { 
    return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE; } 

致谢

感谢观看,欢迎评论和点赞!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214522.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午4:03
下一篇 2026年3月18日 下午4:04


相关推荐

  • Mybatis源码研究1:从JDBC到Mybatis

    Mybatis源码研究1:从JDBC到Mybatis

    2021年9月5日
    52
  • Spring3 MVC请求参数获取的几种方法

     一、      通过@PathVariabl获取路径中的参数  @RequestMapping(value="user/{id}/{name}",method=RequestMethod.GET) public String printMessage1(@PathVariable String id,@PathVariable String name, ModelMa…

    2022年2月24日
    66
  • pgsql数据库恢复_oracle多字段去重

    pgsql数据库恢复_oracle多字段去重概述今天主要介绍一下Oracle、MySQL、sqlserver、pg数据库在删除重复数据时是怎么实现的。这里用实例来说明。一、Oracle数据库去重1、环境准备可以看到“ALLEN”和“SMITH”这两个人的数据重复了,现在要求表中name重复的数据只保留一行,其他的删除。CREATETABLEhwb(idint,namevarchar(10));INSERTINTOhwbVALUES(1,’TOM’);INSERTINTOhwbVALUES(2

    2026年4月20日
    3
  • BM3D算法「建议收藏」

    BM3D算法「建议收藏」BM3D(Block-matchingand3Dfiltering,3维块匹配滤波)2007-TIP-Imagedenoisingbysparse3Dtransform-domaincollaborativelteringNL-means(空间域处理)非局部均值算法p像素的值的大小就应该为q1q2q3每个与p对应房间(像素)值的加权平均,这样就对P图像斑块完成了降噪的过程,类似一个基于大斑块的高斯滤波算法。BM3D把空间域和变换域的降噪方法结合起来BM3D该..

    2022年6月7日
    53
  • 各平均数介绍(算数平均数、几何平均数、加权算术平均数)

    各平均数介绍(算数平均数、几何平均数、加权算术平均数)1 算数平均数这是日常生活中用到最多的平均数 比如计算一个班的平均成绩 平均身高 2 加权算数平均数加权算术平均数一般用于分组数据 其中 X 是每个组的组中值 3 几何平均数 3 1 简单几何平均数 3 2 加权几何平均数 4 几何平均数和算数平均数的鉴别 1 变量值之间的关系不同如果被平均的各变量值之间是平行关系 相互无影响 则平均数用算数平均数求解 例如 求 3 人的平均年龄 用算数平均数 如求流水作业的 3 个车间平均合格率 由于被平均的 3 个车间合格率之间存在相互影响关系 即其中第一年合格率

    2026年3月16日
    2
  • 另一片天空

    另一片天空

    2021年9月11日
    63

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号