Google 致力于为黑人社区推动种族平等。查看具体举措

Preference

无需与设备存储空间交互,也不需要管理界面,便能构建交互式设置画面。
最新更新时间 当前稳定版 下一候选版本 Beta 版 Alpha 版
2020 年 4 月 15 日 1.1.1 - - -

声明依赖项

如需添加 Preference 的依赖项,您必须将 Google Maven 代码库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库

在应用或模块的 build.gradle 文件中添加所需工件的依赖项:

    dependencies {
        def preference_version = "1.1.1"

        // Java language implementation
        implementation "androidx.preference:preference:$preference_version"
        // Kotlin
        implementation "androidx.preference:preference-ktx:$preference_version"
    }
    

如需详细了解依赖项,请参阅添加构建依赖项

反馈

您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对此库的改进有自己的见解,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击加注星标按钮,为现有问题投票。

创建新问题

如需了解详情,请参阅问题跟踪器文档

版本 1.1.1

版本 1.1.1

2020 年 4 月 15 日

发布了 androidx.preference:preference:1.1.1androidx.preference:preference-ktx:1.1.1版本 1.1.1 中包含这些提交内容

问题修复

  • 从 xml 膨胀 FragmentContainerView 时,PreferenceDialogFragmentCompat 不再抛出 IllegalStateException。(b/150051716)

依赖项更新

  • Preference 现在依赖于 Fragment 1.2.4。(aosp/1277317)
  • preference-ktx 依赖项现在依赖于 androidx.core:core-ktx:1.1.0androidx.fragment:fragment-ktx:1.2.4,以便镜像主 preference 工件的依赖项,并确保升级 preference-ktx 时同时更新传递依赖项的主工件和 -ktx 工件。(aosp/1277319)

版本 1.1.0

版本 1.1.0

2019 年 9 月 5 日

发布了 androidx.preference:preference:1.1.0androidx.preference:preference-ktx:1.1.0。点击此处可查看此版本中包含的提交内容。

如果这是您要更新到的第一个 1.1.* 版本,此处提供了自上一个稳定版本 1.0.0 以来的重大变更的简短列表。此外,设置指南示例应用Android 开发者峰会演讲或许也会对您有所帮助。

自 1.0.0 以来的重要变更

  • 弃用了 PreferenceFragment 及其他使用框架 Fragment 的类。您应改为使用 PreferenceFragmentCompat 和其他 *compat 类。
  • 您现在可以在 Preference 上设置 SummaryProvider,以便能够在 Preference 更新或变为对用户可见时动态配置其摘要。要了解详情,请参阅指南
  • 添加了 EditTextPreference.OnBindEditTextListener 接口。这将允许在对话框绑定之后,自定义该对话框中显示的 EditText。这直接替代了将 android:inputType 等属性直接用于 EditTextPreference 的做法,后者在 AndroidX 库中不受支持。要了解详情,请参阅指南
  • 添加了 Preference.setCopyingEnabled()。设置后,长按 Preference 会显示上下文菜单,以便于您复制 Preference 的摘要。
  • 更新了 SeekBarPreference 样式,以符合 Material 规范。要了解 SeekBarPreference 的其他变更,请参阅详细的更改日志
  • 大量的问题修复、样式更新、API 级兼容性修复和一般性的 QOL 改进。

版本 1.1.0-rc01

2019 年 7 月 2 日

发布了 androidx.preference:preference:1.1.0-rc01androidx.preference:preference-ktx:1.1.0-rc01。点击此处可查看此版本中包含的提交内容。

API 变更

  • 弃用了 Preference#onInitializeAccessibilityNodeInfo
  • 此方法代理了特定 Preference 的无障碍功能节点信息,但对这种自定义来说,这是错误的层。如果您要调整无障碍功能信息,您应该替换 onBindViewHolder,然后将无障碍功能信息直接添加到视图中。

版本 1.1.0-beta01

2019 年 6 月 5 日

发布了 androidx.preference:preference:1.1.0-beta01androidx.preference:preference-ktx:1.1.0-beta01。点击此处可查看此版本中包含的提交内容。

自 1.1.0 以来的重要变更

如果这是您要更新到的第一个 1.1.* 版本,此处提供了自上一个稳定版本 1.1.0 以来的重大变更的简短列表。此外,设置指南示例应用Android 开发者峰会演讲或许也会对您有所帮助。

  • 弃用了 PreferenceFragment 及其他使用框架 Fragment 的类。您应改为使用 PreferenceFragmentCompat 和其他 *compat 类。
  • 您现在可以在 Preference 上设置 SummaryProvider,以便能够在 Preference 更新或变为对用户可见时动态配置其摘要。要了解详情,请参阅指南
  • 添加了 EditTextPreference.OnBindEditTextListener 接口。这将允许在对话框绑定之后,自定义该对话框中显示的 EditText。这直接替代了将 android:inputType 等属性直接用于 EditTextPreference 的做法,后者在 AndroidX 库中不受支持。要了解详情,请参阅指南
  • 添加了 Preference.setCopyingEnabled()。设置后,长按 Preference 会显示上下文菜单,以便于您复制 Preference 的摘要。
  • 更新了 SeekBarPreference 样式,以符合 Material 规范。要了解 SeekBarPreference 的其他变更,请参阅详细的更改日志
  • 大量的问题修复、样式更新、API 级兼容性修复和一般性的 QOL 改进。

自 1.1.0-alpha05 以来的 API 变更

  • 从公共 API 中移除了 getOnBindEditTextListener。现在,与此 API 互动时,您只需要使用 setOnBindEditTextListener。

如果您遇到任何问题,或者对新功能有任何建议,请在此处提交错误报告。

版本 1.1.0-alpha05

2019 年 5 月 7 日

发布了 androidx.preference:preference:1.1.0-alpha05androidx.preference:preference-ktx:1.1.0-alpha05。点击此处可查看此版本中包含的提交内容。

新功能

  • 更新了不可选择的 Preference 的样式,标题和摘要现在共享同一种颜色,以表明不能与它们互动,并且它们仅用于显示信息。
  • 注意:您不妨考虑将 enableCopying="true" 添加到不可选择的 Preference 中,以便能够通过长按来复制摘要。

问题修复

  • 修复了选择 PreferenceCategory 和其他不可选择的 Preference 时会出现连锁反应的回归问题
  • 修复了 TalkBack 无法将 DropDownPreference 视为可点击项的无障碍功能问题
  • 修复了 RTL 布局问题
  • 更新了 PreferenceFragmentCompat 中的某些可为 null 的注释,以便与 Fragment 匹配

版本 1.1.0-alpha04

2019 年 3 月 13 日

发布了 androidx.preference:preference:1.1.0-alpha04androidx.preference:preference-ktx:1.1.0-alpha04。点击此处可查看此版本中包含的完整提交内容列表。

新功能

SeekBarPreference 更新!

  • 更新了样式,使之符合 Material 规范
    • 现在,默认情况下,值标签处于隐藏状态,但可通过 app:showSeekBarValue="true"setShowSeekBarValue(true) 显示它。此标签不属于 Material 规范的一部分,但我们知道该标签的使用率很高,因此我们会继续支持它,尽管我们不推荐使用。
    • 现在,值标签会在 SeekBar 被拖动时(而不是被释放时)更新。请注意,这并不表示会在内部更新值,请参见下文来了解启用该功能的新 API。
    • 注意:尽管受支持,但您应该避免在 SeekBarPreference 上设置摘要,因为这不是预期的做法,也不符合 Material 规范。
  • 增加了对连续更新的支持,允许 SeekBar 在被拖动时更新其保存的值。这可以通过 XML 或编程方式使用 app:updatesContinuously="true"setUpdatesContinuously(true) 来启用。每当 SeekBar 在屏幕上的位置发生变化时就会触发此事件。

API 变更

  • findPreference() 添加了缺少的可空性注释。

问题修复

  • 修复了当未启用复制时无法正确移除上下文菜单监听器的错误

版本 1.1.0-alpha03

2019 年 2 月 7 日

androidx.preference:preference 1.1.0-alpha03

发布了 androidx.preference:preference 1.1.0-alpha03androidx.preference:preference-ktx 1.1.0-alpha03 及以下变更。

问题修复

  • 修复了 EditTextPreference 对话框中有时不显示复制/粘贴弹出窗口的问题
  • 修复了基础适配器无法正确取消注册的问题,该问题可在特定条件下造成内存泄漏 (b/121006469)
  • 修复了配置更改期间发生的一些与对话框有关的崩溃问题 (b/122167543)
  • 修复了 SummaryProvider 无法用于 MultiSelectListPreference 的问题 (b/123022772)

版本 1.1.0-alpha02

2018 年 12 月 17 日

另请查看最近更新的设置指南示例应用

新功能

  • 添加了 EditTextPreference.OnBindEditTextListener 接口。这将允许在对话框绑定之后,自定义该对话框中显示的 EditText。例如,设置自定义输入类型/长度或添加 TextWatcher。

  • 添加了 Preference.setCopyingEnabled()。设置后,长按 Preference 会显示上下文菜单,以便于您复制 Preference 的摘要。这可用于允许复制静态信息,例如特定于用户的 ID/应用版本信息。

  • preferenceTheme 现在应用于 Activity 主题。这意味着,当您从代码创建 Preference 时,不需要再使用来自 PreferenceManager#getContext() 的上下文,而只需使用您的 Fragment/Activity 上下文即可。

API 变更

  • 重构了 findPreference() 以返回 <T extends Preference>。这意味着,在使用 findPreference() 时不需要显式转换 Preference。例如,EditTextPreference preference = findPreference(“edit_text”) 现在是有效的代码。

版本 1.1.0-alpha01

2018 年 11 月 5 日

新功能

  • 您现在可以在 Preference 上设置 SummaryProvider,以便能够在 Preference 更新或变为对用户可见时动态配置其摘要。
  • 添加了 ListPreference 和 EditTextPreference 的默认 SummaryProvider 实现。设置后,这两个实现会自动更新 Preference 的摘要,以反映其保存的值,若未保存值,则显示“Not Set”。可以通过 app:useSimpleSummaryProvider=”true” 设置这两个实现
  • 添加了 PreferenceGroup#removePreferenceRecursively,这会以递归方式在组中或层次结构中较低层级上的嵌套组中查找和移除 Preference。

API 变更

  • 弃用了 PreferenceFragment 及其他使用框架 Fragment 的类。您应改为使用 PreferenceFragmentCompat 和其他 compat 类。

问题修复

  • 修复了 iconSpaceReserved 无法搭配 PreferenceCategory 正常工作的问题。
  • 修复了当 API 级别低于 21 时,PreferenceCategory 无法将 colorAccent 用于其标题颜色的问题。
  • 修复了当 API 级别低于 21 时,一些 SeekBarPreference 布局不一致的问题。