偏好设置组件和属性 Android Jetpack 的一部分Android Jetpack。
本主题介绍构建设置屏幕时常用的一些 Preference 组件和属性。
Preference 组件
本部分介绍常用的 Preference 组件。如需了解详情,请参阅每个组件对应的参考页面。
Preference 基础架构
PreferenceFragmentCompat - 一个 Fragment,用于处理 Preference 对象的交互式层次结构的显示。
Preference 容器
PreferenceScreen - 表示设置屏幕的顶层容器。这是 Preference 层次结构的根组件。
PreferenceCategory - 用于对相似的 Preference 进行分组的容器。PreferenceCategory 显示类别标题,并在视觉上分隔 Preference 组。
单独的 Preference
Preference - 表示单个设置的基本构建块。如果 Preference 设置为持久化,则它具有相应的键值对,用于保存用户对该设置的选择,并且可以在应用中的其他位置访问该键值对。
EditTextPreference - 一个持久化 String 值的 Preference。用户可以点按该 Preference 以启动一个包含文本字段的对话框,用户可以在其中更改持久化值。
ListPreference - 一个持久化 String 值的 Preference。用户可以在一个对话框中更改此值,该对话框包含一系列带有相应标签的单选按钮。
MultiSelectListPreference - 一个持久化一组 String 的 Preference。用户可以在一个对话框中更改这些值,该对话框包含一系列带有相应标签的复选框。
SeekBarPreference - 一个持久化整数值的 Preference。可以通过拖动在 Preference 布局中显示的对应 seekbar 来更改此值。
SwitchPreferenceCompat - 一个持久化布尔值的 Preference。可以通过与对应的开关微件交互或点按 Preference 布局来更改此值。
CheckBoxPreference - 一个持久化布尔值的 Preference。可以通过与对应的复选框交互或点按 Preference 布局来更改此值。
Preference 属性
下文列出了一些最常用的属性,它们用于配置 Preference 的外观和行为。
通用属性
-
title -
表示
Preference标题的String值。示例:
app:title="Title" -
summary -
表示
Preference摘要的String值。示例:
app:summary="Summary" -
icon -
表示
Preference图标的Drawable。示例:
app:icon="@drawable/ic_camera" -
key -
表示用于持久化关联
Preference值的键的String值。键允许您在运行时进一步自定义Preference。应为层次结构中的每个Preference设置一个键。示例:
app:key="key" -
enabled -
一个布尔值,表示用户是否可以与
Preference交互。当此值为false时,Preference会显示为灰色,且用户无法与之交互。默认值为true。示例:
app:enabled="false" -
selectable -
一个布尔值,表示用户是否可以与
Preference交互。默认值为true。示例:
app:selectable="false" -
isPreferenceVisible -
一个布尔值,表示
Preference或Preference类别是否可见。这等同于调用setVisible()。示例:
app:isPreferenceVisible="false" -
defaultValue -
表示
Preference的默认值。当找不到此Preference的其他持久化值时,将设置并持久化此值。值的类型取决于关联的Preference。示例:
app:defaultValue="true" -
dependency -
表示控制此
Preference状态的SwitchPreferenceCompat的键。当对应的开关关闭时,此Preference将被停用,无法修改。示例:
app:dependency="parent"
PreferenceCategory 属性
-
initialExpandedChildrenCount -
一个整数值,用于启用可展开的
Preference行为。此值表示在PreferenceGroup中显示的最大子项数量。任何额外的子项都会被折叠,点按展开按钮即可显示。默认情况下,此值为Integer.MAX_VALUE,并显示所有子项。警告: 如果使用此属性,请务必在
PreferenceCategory上设置键,以便在配置更改(例如旋转屏幕)时正确保存和恢复状态。示例:
app:initialExpandedChildrenCount="0"
ListPreference / MultiSelectListPreference 属性
-
entries -
与要向用户显示的列表条目相对应的 String 数组。这些值中的每一个都按索引与内部持久化的值数组相对应。例如,当用户选择第一个列表条目时,对应的值数组中的第一个元素将被持久化。
示例:
app:entries="@array/entries"警告: 确保两个数组的长度相同,并且每个数组的索引与正确的条目/值对匹配。
-
entryValues -
要持久化的条目数组。这些值中的每一个都按索引与向用户显示的列表条目数组相对应。
示例:
app:entryValues="@array/values"