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的相关控件的简单使用,告辞!

更多相关文章

  1. Android自定义View—小巧清爽的多节点进度条
  2. 踩坑日记-Android版本9 API28 NetworkSecurityConfig
  3. Android(安卓)Studio layout中的布局文件创建分类子目录
  4. Android手动清除APP中Data目录下的文件
  5. android之基于Echart的图表
  6. Android(安卓)9 使用okhttp3报错 CLEARTEXT communication to XX
  7. android编译系统(一):GUN Make简介
  8. android studio 3.2---NDK配置

随机推荐

  1. Mysql 切换数据存储目录的实现方法
  2. mysql 5.7版本修改密码的简单方法
  3. Win7x64下Mysql5.7.18解压版的安装方法
  4. Windows 10系统下彻底删除卸载MySQL的方
  5. MySQL中的数据类型binary和varbinary详解
  6. Mysql 5.5.56版本(二进制包安装)自定义安装
  7. Mysql 5.6添加修改用户名和密码的方法
  8. Mysql5.7.18版本(二进制包安装)自定义安装
  9. centos 6.9安装mysql的详细教程
  10. 详解MySQL分组排序求Top N