Appcompat

让您可以在平台的旧版 API 上访问新 API(很多都符合 Material Design 准则)。
最近更新时间 当前稳定版 下一候选版 Beta 版 Alpha 版
2021 年 7 月 21 日 1.3.1 - - 1.4.0-alpha03

声明依赖项

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

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

Groovy

dependencies {
    def appcompat_version = "1.3.1"

    implementation "androidx.appcompat:appcompat:$appcompat_version"
    // For loading and tinting drawables on older versions of the platform
    implementation "androidx.appcompat:appcompat-resources:$appcompat_version"
}

Kotlin

dependencies {
    val appcompat_version = "1.3.1"

    implementation("androidx.appcompat:appcompat:$appcompat_version")
    // For loading and tinting drawables on older versions of the platform
    implementation("androidx.appcompat:appcompat-resources:$appcompat_version")
}

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

反馈

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

创建新问题

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

版本 1.4.0

版本 1.4.0-alpha03

2021 年 6 月 30 日

发布了 androidx.appcompat:appcompat:1.4.0-alpha03androidx.appcompat:appcompat-resources:1.4.0-alpha03版本 1.4.0-alpha03 中包含这些提交内容

新功能

  • 该库现在以 Java 8 语言级别为目标
  • 为更多 TextView 子类(AppCompatMultiAutoCompleteTextViewAppCompatAutoCompleteTextViewAppCompatRadioButtonAppCompatCheckBox)添加了 emoji2 支持。

API 变更

  • 添加了一个用于配置 InputConnection 来使用 View.performReceiveContent 的 API,以便处理对 InputConnection.commitContent 的 IME 调用。(I3a2ad)
  • AppCompatMultiAutoCompleteTextView 中添加了对 EmojiCompat 的支持 (Ifece0)
  • AppCompatAutoCompleteTextView 中添加了对 EmojiCompat 的支持 (Ia1f4b)
  • AppCompatRadioButton 中添加了对 EmojiCompat 的支持 (If08af)
  • AppCompatCheckBox 中添加了对 EmojiCompat 的支持 (I2b3bc)
  • 允许在 AppCompatEditText 中使用 null KeyListener。这逆转了在 1.4-alpha01 中添加到 AppCompatEditText 的非 null 注解,并会在传递了 null 时恢复到先前的行为方式。(I21482b/189559345
  • 添加了 PopupMenu.setForceShowIcon,以便与平台 API 等效(I43bb3b/182789798

bug 修复

  • 修复了 AppCompatEditText 中的 bug,该 bug 会重置 XML 中指定的 inputType 以移除变体。此 bug 是在 AppCompat 1.4.0-alpha01 中引入的。(I9df36b/191061070

版本 1.4.0-alpha02

2021 年 6 月 2 日

发布了 androidx.appcompat:appcompat:1.4.0-alpha02androidx.appcompat:appcompat-resources:1.4.0-alpha02版本 1.4.0-alpha02 中包含这些提交内容

API 变更

  • 添加了接受布局 ID 的 AppCompatDialogFragment 构造函数(Icbf22b/188119987
  • 改进了布局检查器支持 (I02d55)
  • 已将 emoji2-views-helper 中的软件包重命名为 androidx.emoji2.viewsintegration。这是 AppCompat 1.4.0-alpha01 的一项重大变更。应用必须更新 AppCompat 依赖项,才能使用新的 emoji2 版本。(Ie8397)

bug 修复

  • 修复了以下问题:停止的 activity 未收到因通过 AppCompat 进行插桩的夜间模式更改而带来的配置更改。(I8fa8fb/188681415
  • 修复了 AppCompatEditText 中的以下 bug:即使在 xml 中指定了 android:focusable="false",相应视图也可聚焦(在 AppCompat 1.4.0-alpha01 中引入的 bug)(Ib9412)

版本 1.4.0-alpha01

2021 年 5 月 18 日

发布了 androidx.appcompat:appcompat:1.4.0-alpha01androidx.appcompat:appcompat-resources:1.4.0-alpha01版本 1.4.0-alpha01 中包含这些提交内容

API 变更

  • 将 EmojiCompat 支持集成到了多种 AppCompat widget 中(Id409bIf7a1aIc262dIb5f4aI4fb3c)
  • 现在,AppCompat 资源加载向后移植支持嵌套着色资源和矢量可绘制对象。但请注意,这意味着启用向后移植后,应用无法替换针对自定义 Resources 对象的 getDrawable()。(Ia6b03b/176129022
  • 改进了布局检查器支持 (I6d771)

bug 修复

  • 修复了设置窗口回调后调用 setSupportActionBar 会覆盖回调的问题。(Ie43eeb/186791590
  • 添加了解决 SDK 29 和 30 中以下问题的权宜解决方法:从可绘制对象缓存克隆的 ColorStateListDrawable 资源在收到状态更改之前不会加载默认颜色。(Iedb4b)
  • 在由 AppCompat 支持的视图中处理 null 自定义选择操作模式回调时,避免出现 NPE。(I033c7b/173435375

依赖项更新

外部贡献

  • 向后移植 CheckedTextView 的可着色背景和对勾标记 (I8575c)

版本 1.3.1

版本 1.3.1

2021 年 7 月 21 日

发布了 androidx.appcompat:appcompat:1.3.1androidx.appcompat:appcompat-resources:1.3.1版本 1.3.1 中包含这些提交内容

依赖项更新

版本 1.3.0

版本 1.3.0

2021 年 5 月 18 日

发布了 androidx.appcompat:appcompat:1.3.0androidx.appcompat:appcompat-resources:1.3.0版本 1.3.0 中包含这些提交内容

自 1.2.0 以来的重要变更

  • 修复了 android:theme 属性在低于 Lollipop 版本的设备上的 <include> 布局中传播的问题
  • 通过将许多 PNG 资源转换为 VectorDrawables 缩减了库大小
  • 使用 OnReceiveContentListenerAppCompatEditText 添加了拖放事件支持
  • 现在支持对 Android 11 窗口边衬区处理方式进行更改
  • 添加了在带图标的菜单项中的 RTL 支持
  • 添加了在 AppCompatEditText 中插入富媒体内容(例如粘贴图片)的支持

  • 更新了依赖项appcompat 更新了其许多传递依赖项,以支持新功能和修复:

版本 1.3.0-rc01

2021 年 3 月 24 日

发布了 androidx.appcompat:appcompat:1.3.0-rc01androidx.appcompat:appcompat-resources:1.3.0-rc01版本 1.3.0-rc01 中包含这些提交内容

bug 修复

  • 防止在处理 IME 内容插入时过早撤消权限

依赖项更新

外部贡献

  • 修复了 android:theme 属性在低于 Lollipop 版本的设备上的 <include> 布局中传播的问题(Opera 的 Simon Bergner)

版本 1.3.0-beta01

2021 年 1 月 13 日

发布了 androidx.appcompat:appcompat:1.3.0-beta01androidx.appcompat:appcompat-resources:1.3.0-beta01版本 1.3.0-beta01 中包含这些提交内容

新功能

  • 已将主题级操作模式可绘制对象替换为矢量源。 这可能会导致各个图标的视觉外观发生细微变化。(I741a6)

API 变更

  • 将 AppCompatEditText 中的拖放事件(放置事件)与 OnReceiveContentListener 进行了集成。(Ib26c9b/175343405
  • 更新了 OnReceiveContentListener 以及相关 API。如需了解详情,请参阅 androidx.core 库的变更。(Ib4616b/173814913)
  • 已将 widget.RichContentReceiverCompat 移至 view.OnReceiveContentListener。(Ifdab7b/173814913)
  • 用于提供和检索初始周围文字的 API 已向后移植到 EditorInfoCompat。这些 API 支持 IME 应用,可避免出现额外的 IPC 延迟。(Ie3809)

版本 1.3.0-alpha02

2020 年 8 月 19 日

发布了 androidx.appcompat:appcompat:1.3.0-alpha02androidx.appcompat:appcompat-resources:1.3.0-alpha02版本 1.3.0-alpha02 中包含这些提交内容

bug 修复

  • 已将 AppCompatRatingBar PNG 可绘制对象替换为矢量源。这可能会导致各个星标的视觉外观发生细微变化。(I6b99d)
  • 将 WindowInsetsCompat 更新为 Android 11 API (I3df9e)
  • 在带图标的菜单项中支持 RTL (I2f5c5)

依赖项更新

版本 1.3.0-alpha01

2020 年 5 月 20 日

发布了 androidx.appcompat:appcompat:1.3.0-alpha01androidx.appcompat:appcompat-resources:1.3.0-alpha01版本 1.3.0-alpha01 中包含这些提交内容

新功能

  • 添加了新的 Lint 规则,以在扩展 AppCompatActivity 的 Activity 上标记对 setActionBar 的调用
  • 添加了在 AppCompatActivity 中使用 View 时对 Lifecycle 2.3.0-alpha01 中的 ViewTreeLifecycleOwnerLifecycle 2.3.0-alpha03 中的 ViewTreeViewModelStoreOwner 以及 SavedState 1.1.0-alpha01 中的 ViewTreeSavedStateRegistryOwner 的支持。(b/151603528aosp/1300264
  • 添加了用于插入富媒体内容(例如粘贴图片)的通用 API。新回调提供了一个 API,应用可以实现该单一 API 来支持以不同的方式插入富媒体内容。目前,该 API 仅添加到了 AppCompatEditText,并将为以下代码路径调用:
    • 从剪贴板粘贴
    • 从 IME 插入内容 (InputConnection.commitContent) (I22bf7)

bug 修复

  • AppCompat 1.2.0-rc01 开始:AppCompat 不再对 null 菜单调用 onMenuOpened()。(b/142843126)
  • 在对文本外观样式(包含引用主题背景颜色属性的颜色状态列表)调用 TextViewCompat.setTextAppearance 时,可正确解析旧版设备上的文本链接和提示颜色 (b/154702995)

版本 1.2.0

版本 1.2.0

2020 年 8 月 5 日

发布了 androidx.appcompat:appcompat:1.2.0androidx.appcompat:appcompat-resources:1.2.0版本 1.2.0 中包含这些提交内容

自 1.1.0 以来的重要变更

  • 修复了对配置覆盖使用情形(包括自定义语言区域和字体缩放)的支持。如需查看有关如何使用 appcompat:1.2.0 正确实现覆盖的示例,请参阅此处
  • 已弃用 AppCompatDelegate.attachBaseContext()。如果您要调用或替换此方法,请改用 AppCompatDelegate.attachBaseContext2()
  • 已弃用 CollapsibleActionView。不再需要此接口,请使用平台提供的 android.view.CollapsibleActionView 接口。

版本 1.2.0-rc02

2020 年 7 月 22 日

发布了 androidx.appcompat:appcompat:1.2.0-rc02androidx.appcompat:appcompat-resources:1.2.0-rc02版本 1.2.0-rc02 中包含这些提交内容

bug 修复

  • 修复了与夜间模式相关的问题,即从对话框中调用 AppCompatDelegate.setDefaultNightMode 时,有时无法重新创建 Activity 并应用新模式。(aosp/1348308b/158923881

版本 1.2.0-rc01

2020 年 5 月 14 日

发布了 androidx.appcompat:appcompat:1.2.0-rc01androidx.appcompat:appcompat-resources:1.2.0-rc01版本 1.2.0-rc01 中包含这些提交内容

API 变更

  • 已将 AppCompatDelegate.setLocalNightMode 标记为需要 SDK 版本 17 或更高版本,因为在较低版本的 SDK 上,各 Activity 之间存在配置更改泄露方面的平台问题

bug 修复

  • 现在可以在 Activity.attachBaseContext 之前调用 AppCompatDelegate.setLocalNightMode
  • 修复了错误使用已缓存边衬区的 ActionBarOverlayLayout 边衬区使用问题
  • AppCompat 不再对 null 菜单调用 onMenuOpened()。(b/142843126)

版本 1.2.0-beta01

2020 年 4 月 1 日

发布了 androidx.appcompat:appcompat:1.2.0-beta01androidx.appcompat:appcompat-resources:1.2.0-beta01版本 1.2.0-beta01 中包含这些提交内容。

新功能

  • 添加了以下新的 Lint 规则,可以标记以下情况下 AppCompat 的不当使用:
    • 加载颜色状态列表:建议使用 ContextCompatAppCompatResources API 实现向后兼容性
    • 加载可绘制对象:建议使用 ContextCompatResourcesCompat API 实现向后兼容性
    • 使用具有 Alpha 属性的颜色状态列表:标记缺少 android:alpha 属性会导致无法在某些平台版本上正确显示
    • 着色图片视图:标记不使用 app:tint 会导致无法在旧版平台上正确显示
    • 在文本视图中使用复合可绘制对象和着色:建议使用 compat 属性和 API 实现向后兼容性

bug 修复

  • 修复了 ActionBarOverlayLayout(窗口装饰操作)无法正确分派 WindowsInsets 的问题。
  • 修复了旧版平台上可绘制对象和文本外观的着色问题
  • 修复了长按 Webview 时,androidx.appcompat:appcompat:1.1.0 导致 Webview 崩溃的问题 (b/141351441)
  • 修复了基本上下文操纵问题以及在 Activity 启动期间检索系统服务的问题

版本 1.2.0-alpha03

2020 年 3 月 4 日

发布了 androidx.appcompat:appcompat:1.2.0-alpha03androidx.appcompat:appcompat-resources:1.2.0-alpha03版本 1.2.0-alpha03 中包含这些提交内容

bug 修复

  • 修复了操作模式状态保护错误延伸到导航栏且颜色有误的问题 (Ia4a09)
  • 修复了在 API 级别 23 及更低级别的平台上停止的 Activity 无法恢复的问题 (I45201)

版本 1.2.0-alpha02

2020 年 1 月 29 日

发布了 androidx.appcompat:appcompat:1.2.0-alpha02androidx.appcompat:appcompat-resources:1.2.0-alpha02版本 1.2.0-alpha02 中包含这些提交内容

bug 修复

  • 修复了长按时,appcompat 1.1.0 导致 Webview 崩溃的问题 (b/141351441)
  • 修复了在 API 级别 23,相对于复合可绘制对象,在 TextView 上对可绘制对象进行着色的问题 (aosp/1172194)
  • 确保了基本上下文始终是封装容器 (aosp/1194355)
  • 添加了一些改进,在修改基本上下文配置时更加智能了 (aosp/1204543)
  • 停用了 Robolectric 的 createConfigurationContext() (aosp/1186218)

版本 1.2.0-alpha01

2019 年 12 月 4 日

发布了 androidx.appcompat:appcompat:1.2.0-alpha01androidx.appcompat:appcompat-resources:1.2.0-alpha01版本 1.2.0-alpha01 中包含这些提交内容

bug 修复

  • 在启用了启动感知型检查的情况下,在 strict 模式下调用 PackageManager.getActivityInfo 不会再发生崩溃
  • 修复了在 AppCompatButton 中对可绘制对象着色时存在的问题
  • 修复了旧版平台上的着色和文本外观问题

版本 1.1.0

版本 1.1.0

2019 年 9 月 5 日

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

自 1.0.0 以来的重要变更

  • 深色模式改进:弃用了 MODE_NIGHT_AUTO 和基于当前时间的深色/浅色模式切换。考虑使用显式设置或 MODE_NIGHT_AUTO_BATTERY
  • Activity 1.0AppCompatActivity 现在通过 Fragment 1.1.0Activity 1.0.0ComponentActivity 进行过渡性扩展。要了解每个库中的更改,请参阅相关版本说明。
  • AppCompatActivity LayoutId 构造函数AppCompatActivity 的子类现在可以选择性地对 AppCompatActivity 调用采用 R.layout ID 的构造函数,以指明应设置为内容视图的布局,作为调用 onCreate() 中的 setContentView() 的替代方法。这不会改变您的子类必须具有无参构造函数的要求。

版本 1.1.0-rc01

2019 年 7 月 2 日

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

bug 修复

  • DayNight 现在可以正确遵循 configChanges (aosp/981105)
  • 仅对已启动的 Activity 调用 onConfigurationChanged (aosp/987483)

版本 1.1.0-beta01

2019 年 6 月 5 日

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

bug 修复

  • 确保清理 AppCompatDialogs 中的接收者 (aosp/959376)
  • 在工具栏中添加了对 buttonGravity=center_vertical 的支持 (b/130361721)
  • 修复了旋转图标水平偏移的问题 (b/79477181)

版本 1.1.0-alpha05

2019 年 5 月 7 日

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

新功能

bug 修复

  • 进行了关于 DayNight 模式的各种修复
  • 作废了 ActionBar 中的任何背景变化的描绘轮廓
  • 修复了旋转图标 widget 滚动问题
  • 修复了 AlertDialog 中自定义设置窗口背景被覆盖的问题

版本 1.1.0-alpha04

2019 年 4 月 3 日

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

新功能

  • 添加了新的 ThemeOverlay.AppCompat.DayNight 主题系列。这些主题应该在使用 DayNight 功能时使用。

API 变更

  • AppCompatActivity 现在包含采用 @LayoutRes int 的第二个构造函数,取代了以前使用 @ContentView 注解 AppCompatActivity 类的行为。此方法同时适用于应用和库模块。(b/128352521)

bug 修复

  • 尽可能将内部依赖关系固定到稳定版本
  • 修复了下拉模式下的 AppCompatSpinner 滚动问题 (b/124274573)
  • 仅在 DayNight 需要时才调用 applyOverrideConfiguration()

版本 1.1.0-alpha03

2019 年 3 月 13 日

发布了 androidx.appcompat:appcompat:1.1.0-alpha03androidx.appcompat:appcompat-resources:1.1.0-alpha03。这是 appcompat-resources 的第一个版本。点击此处可查看此版本中包含的完整提交内容列表。

新功能

  • 新的 appcompat-resources 库中包含若干 API,这些 API 支持应用在更低版本的平台上加载可绘制对象(包括矢量可绘制对象)并为其着色。这与以前作为 appcompat 模块一部分提供的功能相同,但现在可在不产生 Material Design 完整 appcompat 向后移植(包括 widget、对话框、夜间模式等)开销的情况下提供。
  • 对 DayNight 模式支持进行了重要修复
  • 为 DayNight 模式新增了 MODE_NIGHT_AUTO_BATTERY 选项
  • AppCompatTextView 中对可绘制对象进行着色
  • 现在可通过主题颜色状态列表来设置工具栏溢出的样式
  • 菜单图标现在可以使用引用主题属性的颜色
  • 可以在工具栏中设置新的 app:menu 属性,以在扩展时提供菜单内容

bug 修复

  • 修复了版本 21 中 ImageView 上的默认着色模式存在的问题
  • 修复了设备旋转时不当关闭弹出式旋转图标的问题
  • 修复了 DayNight 不遵循清单中的 configChanges 的问题
  • 修复了切换至 MODE_NIGHT_FOLLOW_SYSTEM 的操作不起作用的问题 (b/111345020)
  • 修复了 WebView 重置 DayNight 资源的问题 (b/37124582)

版本 1.1.0-alpha02

2019 年 2 月 7 日

发布了 androidx.appcompat:appcompat 1.1.0-alpha02

新功能

  • 将特定于资源的可绘制对象处理提取到了钩子机制中 (aosp/870976)
  • 允许工具栏 titleTextColorsubtitleTextColor 使用 ColorStateList,并且添加了 setTitleTextColorsetSubtitleTextColor 方法的 ColorStateList 重载 (aosp/867489)

bug 修复

  • 修复了 fontFamily 在 API 级别低于 24 的平台上无法使用的问题 (aosp/807054)
  • 修复了当 Activity 从 AppCompatActivity 扩展时 textFontWeight 无法使用的错误 (aosp/847640)
  • 修复了导致旋转图标 widget 弹出窗口上的标题文字(使用对话框模式时)不使用 fontFamily 中指定的字体的错误 (aosp/789994)
  • 修复了导致 widget AppCompatCheckBoxAppCompatRadioButton 无法改变背景颜色的错误 (aosp/825160)
  • 修复了 AppCompat 不能替换 android: list styles 的错误 (aosp/862350)

版本 1.1.0-alpha01

2018 年 12 月 3 日

新功能

  • AppCompatTextView 现在支持 app:drawableLeftCompatapp:drawableTopCompatapp:drawableRightCompatapp:drawableBottomCompatapp:drawableStartCompatapp:drawableEndCompat 复合可绘制对象,从而支持 VectorDrawableCompat 等向后移植的可绘制对象类型。

  • AppCompatCheckBoxAppCompatRadioButton 的默认可绘制对象现在可为检查状态变化添加动画效果。

API 变更

  • aosp/740385:ActionBarOverlayLayout 现在会实现 NestedScrollingParent2 和 NestedScrollingParent3,使其能够支持嵌套滚动 3 中的最新功能。如果开发者代码当前替换 ActionBarOverLayLayout.onNestedScroll(View, int, int, int, int),那么它有可能不会再被调用,因此应该改为替换 ActionBarOverLayLayout.onNestedScroll(View, int, int, int, int, int, int[])

版本 1.0.2

版本 1.0.2

2018 年 11 月 7 日

core-1.0.1appcompat-1.0.2 的问题修复版本。

bug 修复

  • 修复了 PrecomputedTextCompat 在与 RTL AppCompatTextView 配合使用时会崩溃的问题。b/113070424

版本 1.0.0

版本 1.0.0

2018 年 11 月 7 日

新功能