Settings设置页面的Preference使用方法
16lz
2021-01-26
PreferenceActivity创建和使用比较复杂,Android官方现在不建议使用了,使用Preference和fragment的结合更加便利地写出一个settings页面,下面来介绍PreferenceScreen和fragment结合方法,对于直接创建PreferenceActivity的方法,这里我就不讲了!
1. 首先,我们新建一个资源文件,类型是Preference,为了方便管理我们在res资源文件夹里新建一个名为xml的文件夹,存放我们的资源文件
鼠标右键xml/new/xml resouce file,我们新建一个settingsfragment.xml文件
在settingsfragment.xml文件中写上你想要的样式,这里写一个小示例:
<?xml version="1.0" encoding="utf-8"?><PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:key="categoryOne" android:title="General"> <Preference android:key="prefAndroid" android:title="安卓" android:summary="点一下更新内容"/> <Preference android:key="prefIos" android:title="IOS" android:summary="可以作为一个设置项"/> <CheckBoxPreference android:key="prefCheckBoxOne" android:title="这相当于一个CheckBox"/> <CheckBoxPreference android:key="prefCheckBoxTwo" android:title="还可以设置summary" android:summaryOn="选中了" android:summaryOff="没选中"/> <EditTextPreference android:key="prefEditText" android:title="这相当于一个EditText" android:summary="我是EditText的一个summary"/> <ListPreference android:key="prefList" android:title="这相当于一个List表"/> PreferenceCategory> <PreferenceCategory android:key="prefCategoryTwo" android:title="Inactive" > <MultiSelectListPreference android:key="prefMultiSelect" android:title="这相当于一个MultiSelect"/> <SwitchPreference android:key="prefSwitch" android:title="这相当于一个Switch" android:switchTextOn="switchTextOn选中了" android:switchTextOff="switchTextOff没选中" android:summaryOn="summaryOn选中了" android:summaryOff="summaryOff没选中" android:shadowColor="#0df10d"/> <RingtonePreference android:key="prefRingtone" android:title="这相当于一个" android:summary="请选择铃声" android:icon="@mipmap/ic_launcher_round"/> PreferenceCategory> PreferenceScreen>
大概长这样子:
2. 然后再新建一个名为Settings的空(empty)activity,这里就不多说了,关键是新建以后
3. 在class文件里新建一个settingsfragment类继承PreferenceFragment类
SettingsByPrenference.class文件
public class SettingsByPrenference extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_settings_by_prenference); } public static class SettingsFragment extends PreferenceFragment{ @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.settingsfragment); } }}
addPreferencesFromResource(R.xml.settingsfragment)这行代码是添加preference的布局
关于如何快速引入重写方法,新手可能比较纠结,使用Ctrl+o快捷键可以快速添加,这个小技巧大大方便你的敲代码。
4. 然后我们转到刚才新建的activity的布局文件,在布局文件里添加一个fragment,通过fragment来将preference的资源文件引进来。
activity_settings_by_prenference.xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.a14392.csdn_example.SettingsByPrenference"> <fragment android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/settingsFragment" android:name="com.example.a14392.csdn_example.SettingsByPrenference$SettingsFragment"/>LinearLayout>
注意: fragment要有id,即使用不上id,也要对id进行设置,否则运行时会报布局加载错误。
5. 这样一个settings页面就做出来了,效果图如下:
先介绍到这里,如有错误欢迎指出,接受各位的批评!下次介绍Preference的相关控件的简单使用,告辞!
更多相关文章
- Android自定义View—小巧清爽的多节点进度条
- 踩坑日记-Android版本9 API28 NetworkSecurityConfig
- Android(安卓)Studio layout中的布局文件创建分类子目录
- Android手动清除APP中Data目录下的文件
- android之基于Echart的图表
- Android(安卓)9 使用okhttp3报错 CLEARTEXT communication to XX
- android编译系统(一):GUN Make简介
- android studio 3.2---NDK配置