preference用法for_interference用法

preference用法for_interference用法文章目录PreferenceFragment简介PreferenceFragment使用PreferenceFragment扩展PreferenceFragment简介在我们写一个项目的时候,基本都有选项设置界面,这类设置界面的原理基本都是本地的一些个性化设置,通过读取本地设置来改变某些差异显示(例如字体大小,主题颜色,WIFI自动下载等)。这些设置一般都会使用Preference来保存,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

PreferenceFragment简介

在我们写一个项目的时候,基本都有选项设置界面,这类设置界面的原理基本都是本地的一些个性化设置,通过读取本地设置来改变某些差异显示(例如字体大小,主题颜色,WIFI自动下载等)。这些设置一般都会使用Preference来保存,Android专门为这种Activity提供了便捷的基类PreferenceActivity(如果是Fragment,使用PreferenceFragment,现在推荐使用v7包下的PreferenceFragmentCompat),这些类内部封装了Preference,会帮我们自动读写设置,方便开发者便捷完成这类功能。

PreferenceFragment使用

PreferenceFragment位于android.preference包下,现在推荐使用v7包下的,这里还是使用这个来说明,原理是一样的。
包
先来使用下:

  1. 在res目录下创建xml目录
    创建xml目录
  2. 在xml目录下创建xml文件(文件名自己定义即可)
    这里演示的文件是pref_setting.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <CheckBoxPreference android:defaultValue="false" android:key="setting_no_img" android:summary="仅在WIFI环境下显示图片" android:title="无图模式" />

    <PreferenceCategory android:title="设置">

        <EditTextPreference android:hint="设置用户名" android:key="setting_name" android:title="设置用户名" />

        <Preference android:key="setting_font_size" android:summary="设置字体大小" android:title="设置字体大小" />
    </PreferenceCategory>

    <SwitchPreference android:defaultValue="false" android:key="setting_switch" android:title="设置模式-Switch" />

    <RingtonePreference android:key="setting_ring" android:title="设置模式-Ringtone" />
</PreferenceScreen>
  1. 继承PreferenceFragment,在onCreate方法中调用addPreferencesFromResource方法加载xml目录下的资源即可
public class PreferenceTestFragment extends PreferenceFragment { 
   

    @Override
    public void onCreate(Bundle savedInstanceState) { 
   
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref_setting);//加载xml文件
    }
}

运行效果:
效果图
pref_setting.xml中使用的控件可以查看android.preference包下,这里面有几个常用的属性:

属性名 用途
android:key 存储key,这个就是SharedPreferences存储时的key
android:title 标题
android:defaultValue 默认值

设置点击事件

findPreference("setting_no_img").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
   
            @Override
            public boolean onPreferenceClick(Preference preference) { 
   
				//todo
                return true;
            }
        });

findPreference中的key就是xml中声明的key。
可以使用registerOnSharedPreferenceChangeListener来监听SharedPreferences值改变。

 getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);

PreferenceFragment 扩展

可以通过继承Preference来实现自定义控件

public class ThemePreference extends Preference { 
   

    private CircleView circleImageView;

    public ThemePreference(Context context, AttributeSet attrs) { 
   
        super(context, attrs);
        // 加载布局文件
        setWidgetLayoutResource(R.layout.item_theme_preference_preview);
    }

	// 绑定视图
    @Override
    protected void onBindView(View view) { 
   
        super.onBindView(view);
        int color = CommonSettingUtil.getInstance().getThemeColor();
        circleImageView = (CircleView) view.findViewById(R.id.iv_preview);
        circleImageView.setBackgroundColor(color);
    }

    /** * 刷新颜色显示 */
    public void updateColor() { 
   
       circleImageView.setBackgroundColor(CommonSettingUtil.getInstance().getThemeColor());
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2025年9月30日 下午3:43
下一篇 2025年9月30日 下午4:15


相关推荐

  • pycharm的卸载和安装

    pycharm的卸载和安装很久之前我就写了 pycharm 的安装过程 结果前两天我准备在另一篇博客中加入连接时发现我居然没发表 而且草稿中也没有 于是乎 我就准备卸载重新下再截一次屏 结果我发现 pycharm 居然卸不干净 这 我就不开心了 扒拉了一下发现了些小东西 所以这次就把安装和卸载一起写了 卸载 pycharm 第一步卸载软件并删除安装目录 1 首先 点击图标右键 如果有强力卸载的话直

    2026年3月27日
    2
  • mysql 建数据库命令_新手入门MySQL数据库命令大全

    mysql 建数据库命令_新手入门MySQL数据库命令大全Windows 操作系统进入 CMD 命令行 进入 mysql exe 所在目录 运行命令 mysql exe h 主机名 u 用户名 p 密码注意 参数名与值之间没有空格 如 h127 0 0 1 二 数据库命令 1 创建数据库 createdataba 数据库名 如 createdataba 2 切换到指定数据库 use 数据库名 如 useitsource 3 显示数

    2026年3月19日
    3
  • 设备驱动外传 – 虚拟总线和platform device「建议收藏」

    设备驱动外传 – 虚拟总线和platform device「建议收藏」1.总论2.系统初始化platformdevice3.驱动程序使用platformdevice   1.总论Linux-2.6.11引入了设备模型的概念,将大部分设备驱动挂载到虚拟总线上。其目的在于:1)提供友好的用户接口,用户可以在sys/bus/platform/下找到相应的驱动和设备。2)更有利于电源管理。  2

    2022年7月24日
    11
  • 怎么开启WAMP环境的cURL扩展

    怎么开启WAMP环境的cURL扩展因为做一些采集的功能 需要用到 curl 扩展 在本地 wamp 环境下并没有默认开启 百度一下开启方式很简单 左键单击绿色 W 图标 移动到 PHP 移动到 php 扩展 在 php curl 前面打勾 wamp 环境会自动重启 重启完成之后 curl 扩展就启用了

    2026年3月17日
    2
  • n8n连接mysql教程

    n8n连接mysql教程

    2026年3月15日
    2
  • git log 查看 当前分支的 提交历史[通俗易懂]

    git log 查看 当前分支的 提交历史[通俗易懂]gitlog查看当前分支的提交历史在提交了若干更新之后,想回顾下提交历史,可以使用gitlog命令查看默认不用任何参数的话,gitlog会按提交时间列出所有的更新,最近的更新排在最上面。看到了吗,每次更新都有一个SHA-1校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。gitlog有许多选项可以帮助你搜寻感兴趣的提交,接下来我们…

    2022年8月22日
    15

发表回复

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

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