传统的配置方法是:自己布局文本框、多选框、列表框,然后将配置数据保存或加载在文件中。
其实我们也可以用另一套办法,安卓有一个模板:Settings Activity。这里面为我们写好了数据保存和加载,我们完全不用操心,更重要的是,我们不再是直接布局文本框、多选框、列表框,而是使用 PreferenceScreen。
由于不是布局文件(实际也是起布局的作用),所以不是放在 layout 文件夹的,而是放在 xml 文件夹的。
根元素:PreferenceScreen,其下可以有以下元素:
名称望名生义,属性名称也是。
说说前面的 Preference,真的用起来很简单,很方便。
点击它,它会自动打开系统设置。
依赖关联
比如只有选择了 A,B 才不是灰的。就是用 dependency 指定前一元素。
光有配置文件就行了?
如果是在这个 Settings Activity 模板体系下的话,首先还要在 pref_headers.xml 配置 header 关联。
还有就是程序代码,但是只要我们是选择 Settings Activity 模板,Android Studio 会把代码给我们写好,我们基本不用操作,我们只需要保证一个 xml 关联一个类就可以了,这个类继承自 PreferenceFragment,我们只需要照抄修改少量的代码就可以了。
还有个问题
SwitchPreference、CheckBoxPreference 这类控件,展示的时候,我们都知道我们的当前值是什么。但是 EditTextPreference 一类的控件就不会,它就是这个样子:
我们希望是这个样子(把值显示出来):
要解决这个问题,就是在对应的类中,onCreate() 方法中增加一句:
通过 bindPreferenceSummaryToValue()、findPreference() 解决。它的原理实际就是改 summary 属性。
还有一个很重要的,我们要读取设置的值,怎么办呢?
PreferenceManager 拥有一个 SharedPreferences 实例,也拥有一个 SharedPreferences.Editor 实例。