Appcompat
最近更新时间 | 当前稳定版 | 下一候选版本 | Beta 版 | Alpha 版 |
---|---|---|---|---|
2021 年 1 月 13 日 | 1.2.0 | - | 1.3.0-beta01 | - |
声明依赖项
如需添加 Appcompat 的依赖项,您必须将 Google Maven 代码库添加到项目中。如需了解详情,请参阅 Google 的 Maven 代码库。
在应用或模块的 build.gradle
文件中添加所需工件的依赖项:
dependencies { def appcompat_version = "1.2.0" implementation "androidx.appcompat:appcompat:$appcompat_version" // For loading and tinting drawables on older versions of the platform implementation "androidx.appcompat:appcompat-resources:$appcompat_version" }
如需详细了解依赖项,请参阅添加构建依赖项。
反馈
您的反馈将帮助我们改进 Jetpack。如果您发现了新问题,或对库的改进有某些建议,请告诉我们。创建新问题前,请先查看此库中的现有问题。您可以点击星标按钮,为现有问题投票。
如需了解详情,请参阅问题跟踪器文档。
版本 1.3.0
版本 1.3.0-beta01
2021 年 1 月 13 日
发布了 androidx.appcompat:appcompat:1.3.0-beta01
和 androidx.appcompat:appcompat-resources:1.3.0-beta01
。版本 1.3.0-beta01 中包含这些提交内容。
新功能
- 已将主题级操作模式可绘制对象替换为矢量源。 这可能会导致各个图标的视觉外观发生细微变化。(I741a6)
API 变更
- 将 AppCompatEditText 中的拖放事件(放置事件)与 OnReceiveContentListener 进行了集成。(Ib26c9、b/175343405)
- 更新了
OnReceiveContentListener
以及相关 API。如需了解详情,请参阅 androidx.core 的库变更。(Ib4616、b/173814913) - 已将 widget.RichContentReceiverCompat 移至 view.OnReceiveContentListener。(Ifdab7、b/173814913)
- 用于提供和检索初始周围文字的 API 已向后移植到
EditorInfoCompat
。这些 API 支持 IME 应用,可避免出现额外的 IPC 延迟。(Ie3809)
版本 1.3.0-alpha02
2020 年 8 月 19 日
发布了 androidx.appcompat:appcompat:1.3.0-alpha02
和 androidx.appcompat:appcompat-resources:1.3.0-alpha02
。版本 1.3.0-alpha02 中包含这些提交内容。
问题修复
- 已将 AppCompatRatingBar PNG 可绘制对象替换为矢量源。这可能会导致各个星标的视觉外观发生细微变化。(I6b99d)
- 将 WindowInsetsCompat 更新为 Android 11 API (I3df9e)
- 在带图标的菜单项中支持 RTL (I2f5c5)
依赖项更新
- AppCompat 已将其依赖项从 Fragment
1.1.0
更新为 Fragment1.3.0-alpha08
。强烈建议您仔细阅读 Fragment1.2.0
版本说明,了解上一 Fragment 版本中引入的重要变更。 - AppCompat 已将其依赖项从 Activity
1.0.0
更新为 Activity1.2.0-alpha08
。强烈建议您仔细阅读 Activity1.1.0
版本说明,了解上一 Activity 版本中引入的重要变更。AppCompatActivity
现在使用 Activity1.2.0-alpha08
中引入的OnContextAvailableListener
API 来设置AppCompatDelegate
。在AppCompatActivity
的子类中添加的任何监听器都将在此监听器之后运行。(I513da)
版本 1.3.0-alpha01
2020 年 5 月 20 日
发布了 androidx.appcompat:appcompat:1.3.0-alpha01
和 androidx.appcompat:appcompat-resources:1.3.0-alpha01
。版本 1.3.0-alpha01 中包含这些提交内容。
新功能
- 添加了新的 Lint 规则,以在扩展 AppCompatActivity 的 Activity 上标记对 setActionBar 的调用
- 添加了在
AppCompatActivity
中使用View
时对 Lifecycle2.3.0-alpha01
中的ViewTreeLifecycleOwner
、Lifecycle2.3.0-alpha03
中的ViewTreeViewModelStoreOwner
以及 SavedState1.1.0-alpha01
中的ViewTreeSavedStateRegistryOwner
的支持。(b/151603528、aosp/1300264) - 添加了用于插入富媒体内容(例如粘贴图片)的通用 API。新回调提供了一个 API,应用可以实现该单一 API 来支持以不同的方式插入富媒体内容。目前,该 API 仅添加到了
AppCompatEditText
,并将为以下代码路径调用:- 从剪贴板粘贴
- 从 IME 插入内容 (
InputConnection.commitContent
) (I22bf7)
问题修复
- 从 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.0
和 androidx.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-rc02
和 androidx.appcompat:appcompat-resources:1.2.0-rc02
。版本 1.2.0-rc02 中包含这些提交内容。
问题修复
- 修复了与夜间模式相关的问题,即从对话框中调用
AppCompatDelegate.setDefaultNightMode
时,有时无法重新创建 Activity 并应用新模式。(aosp/1348308、b/158923881)
版本 1.2.0-rc01
2020 年 5 月 14 日
发布了 androidx.appcompat:appcompat:1.2.0-rc01
和 androidx.appcompat:appcompat-resources:1.2.0-rc01
。版本 1.2.0-rc01 中包含这些提交内容。
API 变更
- 已将
AppCompatDelegate.setLocalNightMode
标记为需要 SDK 版本 17 或更高版本,因为在较低版本的 SDK 上,Activity 之间存在配置更改泄漏方面的平台问题
问题修复
- 现在可以在
Activity.attachBaseContext
之前调用AppCompatDelegate.setLocalNightMode
- 修复了错误使用缓存的边衬区的
ActionBarOverlayLayout
边衬区使用问题 - AppCompat 不再对
null
菜单调用onMenuOpened()
。(b/142843126)
版本 1.2.0-beta01
2020 年 4 月 1 日
发布了 androidx.appcompat:appcompat:1.2.0-beta01
和 androidx.appcompat:appcompat-resources:1.2.0-beta01
。版本 1.2.0-beta01 中包含这些提交内容。
新功能
- 添加了以下新的 Lint 规则,可以标记以下情况下 AppCompat 的不当使用:
- 加载颜色状态列表:建议使用
ContextCompat
和AppCompatResources
API 实现向后兼容性 - 加载可绘制对象:建议使用
ContextCompat
和ResourcesCompat
API 实现向后兼容性 - 使用具有 Alpha 属性的颜色状态列表:标记缺少
android:alpha
属性会导致无法在某些平台版本上正确显示 - 着色图片视图:标记不使用
app:tint
会导致无法在旧版平台上正确显示 - 在文本视图中使用复合可绘制对象和着色:建议使用 compat 属性和 API 实现向后兼容性
- 加载颜色状态列表:建议使用
问题修复
- 修复了
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-alpha03
和 androidx.appcompat:appcompat-resources:1.2.0-alpha03
。版本 1.2.0-alpha03 中包含这些提交内容。
问题修复
版本 1.2.0-alpha02
2020 年 1 月 29 日
发布了 androidx.appcompat:appcompat:1.2.0-alpha02
和 androidx.appcompat:appcompat-resources:1.2.0-alpha02
。版本 1.2.0-alpha02 中包含这些提交内容。
问题修复
- 修复了长按时,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-alpha01
和 androidx.appcompat:appcompat-resources:1.2.0-alpha01
。版本 1.2.0-alpha01 中包含这些提交内容。
问题修复
- 在启用了启动感知型检查的情况下,在 strict 模式下调用 PackageManager.getActivityInfo 不会再发生崩溃
- 修复了在 AppCompatButton 中对可绘制对象着色时存在的问题
- 修复了旧版平台上的着色和文本外观问题
版本 1.1.0
版本 1.1.0
2019 年 9 月 5 日
发布了 androidx.appcompat:appcompat:1.1.0
和 androidx.appcompat:appcompat-resources:1.1.0
。点击此处可查看此版本中包含的提交内容。
自 1.0.0 以来的重要变更
- 深色模式改进:弃用了
MODE_NIGHT_AUTO
和基于当前时间的深色/浅色模式切换。考虑使用显式设置或MODE_NIGHT_AUTO_BATTERY
。 - Activity 1.0:
AppCompatActivity
现在通过 Fragment1.1.0
从 Activity1.0.0
的ComponentActivity
进行过渡性扩展。要了解每个库中的更改,请参阅相关版本说明。 - AppCompatActivity LayoutId 构造函数:
AppCompatActivity
的子类现在可以选择性地对AppCompatActivity
调用采用R.layout
ID 的构造函数,以指明应设置为内容视图的布局,作为调用onCreate()
中的setContentView()
的替代方法。这不会改变您的子类必须具有无参构造函数的要求。
版本 1.1.0-rc01
2019 年 7 月 2 日
发布了 androidx.appcompat:appcompat:1.1.0-rc01
和 androidx.appcompat:appcompat-resources:1.1.0-rc01
。点击此处可查看此版本中包含的提交内容。
问题修复
- DayNight 现在可以正确遵循
configChanges
(aosp/981105) - 仅对已启动的 Activity 调用
onConfigurationChanged
(aosp/987483)
版本 1.1.0-beta01
2019 年 6 月 5 日
发布了 androidx.appcompat:appcompat:1.1.0-beta01
和 androidx.appcompat:appcompat-resources:1.1.0-beta01
。点击此处可查看此版本中包含的提交内容。
问题修复
- 确保清理 AppCompatDialogs 中的接收者 (aosp/959376)
- 在工具栏中添加了对
buttonGravity=center_vertical
的支持 (b/130361721) - 修复了旋转图标水平偏移的问题 (b/79477181)
版本 1.1.0-alpha05
2019 年 5 月 7 日
发布了 androidx.appcompat:appcompat:1.1.0-alpha05
和 androidx.appcompat:appcompat-resources:1.1.0-alpha05
。点击此处可查看此版本中包含的提交内容。
新功能
- setDefaultNightMode() 现在会自动重建任何已启动的 Activity。
问题修复
- 进行了关于 DayNight 模式的各种修复
- 作废了 ActionBar 中的任何背景变化的描绘轮廓
- 修复了旋转图标微件滚动问题
- 修复了 AlertDialog 中自定义设置窗口背景被覆盖的问题
版本 1.1.0-alpha04
2019 年 4 月 3 日
发布了 androidx.appcompat:appcompat:1.1.0-alpha04
和 androidx.appcompat:appcompat-resources:1.1.0-alpha04
。点击此处可查看此版本中包含的提交内容。
新功能
- 添加了新的
ThemeOverlay.AppCompat.DayNight
主题系列。这些主题应该在使用 DayNight 功能时使用。
API 变更
- AppCompatActivity 现在包含采用
@LayoutRes int
的第二个构造函数,取代了以前使用@ContentView
注解 AppCompatActivity 类的行为。此方法同时适用于应用和库模块。(b/128352521)
问题修复
- 尽可能将内部依赖关系固定到稳定版本
- 修复了下拉模式下的
AppCompatSpinner
滚动问题 (b/124274573) - 仅在 DayNight 需要时才调用
applyOverrideConfiguration()
版本 1.1.0-alpha03
2019 年 3 月 13 日
发布了 androidx.appcompat:appcompat:1.1.0-alpha03
和 androidx.appcompat:appcompat-resources:1.1.0-alpha03
。这是 appcompat-resources
的第一个版本。点击此处可查看此版本中包含的完整提交内容列表。
新功能
- 新的 appcompat-resources 库中包含若干 API,这些 API 支持应用在更低版本的平台上加载可绘制对象(包括矢量可绘制对象)并为其着色。这与以前作为 appcompat 模块一部分提供的功能相同,但现在可在不产生 Material Design 完整 appcompat 向后移植(包括微件、对话框、夜间模式等)开销的情况下提供。
- 对 DayNight 模式支持进行了重要修复
- 为 DayNight 模式新增了
MODE_NIGHT_AUTO_BATTERY
选项 - 在
AppCompatTextView
中对可绘制对象进行着色 - 现在可通过主题颜色状态列表来设置工具栏溢出的样式
- 菜单图标现在可以使用引用主题属性的颜色
- 可以在工具栏中设置新的 app:menu 属性,以在扩展时提供菜单内容
问题修复
- 修复了版本 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)
- 允许工具栏
titleTextColor
和subtitleTextColor
使用ColorStateList
,并且添加了setTitleTextColor
和setSubtitleTextColor
方法的ColorStateList
重载 (aosp/867489)
问题修复
- 修复了
fontFamily
在 API 级别低于 24 的平台上无法使用的问题 (aosp/807054) - 修复了当 Activity 从
AppCompatActivity
扩展时textFontWeight
无法使用的错误 (aosp/847640) - 修复了导致旋转图标微件弹出窗口上的标题文字(使用对话框模式时)不使用
fontFamily
中指定的字体的错误 (aosp/789994) - 修复了导致微件
AppCompatCheckBox
和AppCompatRadioButton
无法改变背景颜色的错误 (aosp/825160) - 修复了 AppCompat 不能替换
android: list styles
的错误 (aosp/862350)
版本 1.1.0-alpha01
2018 年 12 月 3 日
新功能
AppCompatTextView 现在支持
app:drawableLeftCompat
、app:drawableTopCompat
、app:drawableRightCompat
、app:drawableBottomCompat
、app:drawableStartCompat
和app:drawableEndCompat
复合可绘制对象,从而支持VectorDrawableCompat
等向后移植的可绘制对象类型。AppCompatCheckBox
和AppCompatRadioButton
的默认可绘制对象现在可为检查状态变化添加动画效果。
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.1
和 appcompat-1.0.2
的问题修复版本。
问题修复
- 修复了
PrecomputedTextCompat
在与 RTLAppCompatTextView
配合使用时会崩溃的问题。b/113070424
版本 1.0.0
版本 1.0.0
2018 年 11 月 7 日
新功能
AnimatedStateListDrawableCompat
可提供可绘制对象状态之间的动画转换。