AndroidPreference
基本上每个应用都有一个设置(首选项)界面, Google其实提供了默认的设置界面实现方式. 介绍下
Preference该类拥有多个直接或间接的子类, 这些子类可以组成不同内容的首选项界面. 和一般界面不同的
关键类:
- Preference 普通
- RingtonePreference 铃声
- CheckBoxPreference 选择按钮
- SwitchPreference 切换按钮
- PreferenceGroup(抽象类)
- PreferenceCategory 分类
- PreferenceScreen 首选项界面
- DialogPreference (抽象类)
- ListPreference 列表
- EditTextPreference 输入框
- MultiSelectListPreference 多选
- PreferenceActivity 首选项界面
- PreferenceFragment 首选项片段
- PreferenceViewHolder
首选项
可以通过在res/xml目录下创建一个XML文件来控制显示一个首选项界面内容, 一般命名为preference.xml.
PreferenceActivity
在android3.0以下应使用继承PreferenceActivity方式实现(因为Fragment是3.0之后才有的), 但是如果需要使用多面板模式就必须使用这种方法
public class MainActivity extends PreferenceActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main); 不允许使用一般布局
addPreferencesFromResource(R.xml.preference);
}
}
PreferenceFragment
在Android3.0或以上应采用Fragment的形式, 相对Activity更加灵活和效率. 使用方法和一般Fragment一样.
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
...
}
属性
以下介绍的是所有Preference标签通用的属性
android:key
等同于SharePreference中的key值, 对于某些不需要存储数据的首选项可以不填写该属性(例如PreferenceCategory和PreferenceScreen)
android:title
提供用户可见的标题
android:defaultValue
在SharePreference中的默认值
android:summary
描述性文字
android:icon
图标
示例
演示所有的标签
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="@string/app_name">
<CheckBoxPreference android:title="CheckBoxPreference"/>
<SwitchPreference android:title="SwitchPreference"/>
<PreferenceCategory android:title="PreferenceCategory"/>
<ListPreference android:title="ListPreference"/>
<EditTextPreference android:title="EditTextPreference"/>
<MultiSelectListPreference android:title="MultiSelectListPreference"/>
<RingtonePreference android:title="RingtonePreference"/>
<Preference android:title="Preference"/>
</PreferenceScreen>
PreferenceScreen
表示一个首选项界面(首选项布局必须以该标签为根标签)
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
</