偏好设置组件和属性 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"