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

一个布尔值,表示 PreferencePreference 类别是否可见。这等同于调用 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"