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

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

首选项组件

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

首选项基础架构

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

首选项容器

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

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

单个首选项

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

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

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

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 属性

entries

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

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

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

entryValues

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

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