Android中PreferenceFragment的使用详解

本文主要介绍了Android中PreferenceFragment的使用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

PreferenceFragment简介

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

PreferenceFragment使用

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

包

先来使用下:

在res目录下创建xml目录

创建xml目录

在xml目录下创建xml文件(文件名自己定义即可)
这里演示的文件是pref_setting.xml

    

继承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()); } } 

到此这篇关于Android中PreferenceFragment的使用详解的文章就介绍到这了,更多相关Android PreferenceFragment 内容请搜索0133技术站以前的文章或继续浏览下面的相关文章希望大家以后多多支持0133技术站!

以上就是Android中PreferenceFragment的使用详解的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java