最近项目开发中使用到了PreferenceFragment来做一个设置页面的功能,所以就写一个小例子记录一下使用过程。
效果图:
首先fragment继承于PreferenceFragment,使用addPreferencesFromResource添加布局。
class SettingPreferenceFragment: PreferenceFragment() {
private var checkBoxWifi: CheckBoxPreference?= null
private var checkBoxDarkMode: CheckBoxPreference?= null
private var switch: SwitchPreference?= null
private var clearCache: Preference?= null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
addPreferencesFromResource(R.xml.settings)
initView()
}
private fun initView() {
checkBoxWifi = findPreference("wifi_download") as CheckBoxPreference?
checkBoxDarkMode = findPreference("darkmode") as CheckBoxPreference?
switch = findPreference("notify") as SwitchPreference?
clearCache = findPreference("clear_cache")
checkBoxWifi?.onPreferenceChangeListener = object: Preference.OnPreferenceChangeListener {
override fun onPreferenceChange(preference: Preference?, newValue: Any?): Boolean {
return true
}
}
}
}
在xml文件中添加控件,比如CheckBoxPreference、SwitchPreference、Preference等。
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="设置" />
<CheckBoxPreference
android:defaultValue="false"
android:key="wifi_download"
android:title="下载"
android:summary="wifi下自动下载"/>
<CheckBoxPreference
android:defaultValue="false"
android:key="darkmode"
android:title="夜间模式"
android:summary="开启夜间模式"/>
<SwitchPreference
android:key="notify"
android:title="通知"
android:summary="是否开启通知"/>
<Preference
android:key="clear_cache"
android:title="缓存"
android:summary="是否清理缓存"/>
</PreferenceScreen>
Preference常用属性
android:key 存储key,这个就是SharedPreferences存储时的key
android:title 标题
android:defaultValue 默认值
android:summary 副标题
然后在fragment中通过findPreference找控件,可用onPreferenceChangeListener设置监听事件。