首选项组件和属性   Android Jetpack 的一部分。

本主题描述了一些构建设置屏幕时最常用的 Preference 组件和属性。

首选项组件

本节介绍常见的 Preference 组件。有关更多信息,请参阅每个组件的相应参考页面。

首选项基础结构

PreferenceFragmentCompat - 一个 Fragment,用于处理显示 Preference 对象的交互式层次结构。

首选项容器

PreferenceScreen - 表示设置屏幕的顶级容器。这是 Preference 层次结构的根组件。

PreferenceCategory - 用于对类似 Preferences 进行分组的容器。 PreferenceCategory 显示类别标题并在视觉上分隔 Preferences 组。

单个首选项

Preference - 表示单个设置的基本构建块。如果将 Preference 设置为持久化,则它具有相应的键值对,该键值对保存用户对设置的选择,可以在应用程序的其他地方访问。

EditTextPreference - 一个 Preference,用于持久化 String 值。用户可以点击 Preference 以启动包含文本字段的对话框,允许用户更改持久化值。

ListPreference - 一个 Preference,用于持久化 String 值。用户可以在包含带有相应标签的单选按钮列表的对话框中更改此值。

MultiSelectListPreference - 一个 Preference,用于持久化一组字符串。用户可以在包含带有相应标签的复选框列表的对话框中更改这些值。

SeekBarPreference - 一个 Preference,用于持久化整数值。可以通过拖动显示在 Preference 布局中的相应SeekBar来更改此值。

SwitchPreferenceCompat - 一个 Preference,用于持久化布尔值。可以通过与相应的开关部件交互或点击 Preference 布局来更改此值。

CheckBoxPreference - 一个 Preference,用于持久化布尔值。可以通过与相应的复选框交互或点击 Preference 布局来更改此值。

首选项属性

下面列出了一些最常用的用于配置 Preference 外观和行为的属性。

通用属性

标题

一个 String 值,表示 Preference 的标题。

示例: app:title="Title"

摘要

一个 String 值,表示 Preference 摘要。

示例: app:summary="Summary"

图标

一个 Drawable,表示 Preference 图标。

示例: app:icon="@drawable/ic_camera"

一个 String 值,表示用于持久化关联 Preference 值的键。键允许您在运行时进一步自定义 Preference。您应该为层次结构中的每个 Preference 设置一个键。

示例: app:key="key"

已启用

一个布尔值,指示用户是否可以与 Preference 交互。当此值为 false 时, Preference 显示为灰色,用户无法与其交互。默认值为 true

示例: app:enabled="false"

可选

一个布尔值,指示用户是否可以与 Preference 交互。默认值为 true

示例: app:selectable="false"

isPreferenceVisible

一个布尔值,指示 PreferencePreference 类别是否可见。这等效于调用 setVisible()

示例: app:isPreferenceVisible="false"

defaultValue

表示 Preference 的默认值。当找不到此 Preference 的任何其他持久化值时,将设置并持久化此值。值类型取决于关联的 Preference

示例: app:defaultValue="true"

依赖项

表示控制此 Preference 状态的 SwitchPreferenceCompat 的键。当相应的开关关闭时,此 Preference 将被禁用,并且无法修改。

示例: app:dependency="parent"

PreferenceCategory 属性

initialExpandedChildrenCount

一个整数值,用于启用可扩展的 Preference 行为。此值表示在 PreferenceGroup 中显示的最大子项数。任何额外的子项都会折叠,并且可以通过点击展开按钮来显示。默认情况下,此值为 Integer.MAX_VALUE,并且显示所有子项。

警告:如果使用此属性,请确保在 PreferenceCategory 上设置键,以便在配置更改时(例如旋转屏幕时)正确保存和恢复状态。

示例: app:initialExpandedChildrenCount="0"

ListPreference / MultiSelectListPreference 属性

条目

一个字符串数组,对应于要显示给用户的列表条目。这些值中的每一个都按索引对应于内部持久化的值数组。例如,当用户选择第一个列表条目时,将持久化相应值数组中的第一个元素。

示例: app:entries="@array/entries"

警告:确保两个数组的长度相同,并且每个数组的索引都匹配正确的条目/值对。

entryValues

要持久化的条目数组。这些值中的每一个都按索引与显示给用户的列表条目数组相对应。

示例: app:entryValues="@array/values"