首选项组件和属性 是 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
-
一个布尔值,指示
Preference
或Preference
类别是否可见。这等效于调用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"