本页面提供有关较旧的支持库软件包版本的信息。如需了解最新的支持库版本,请参阅最新支持库修订版本。
修订版本 26.0.0 Beta 2
(2017 年 6 月)
请注意,26.0.0-beta2 是预发布版本。其 API Surface 可能会发生变化,并且不一定包含支持库最新稳定版本中的功能或 bug 修复。
重要提示: 支持库现在可通过 Google 的 Maven 代码库获取。您无需从 SDK 管理器下载支持代码库。如需了解详情,请参阅支持库设置。
新 API
- 新的
JobIntentService
类,可帮助开发者以符合新的 Android O 后台执行限制的方式调度任务。
API 差异
Bug 修复
- Android O SDK 更新导致 TextView 中的斜体丢失
- 连接到 MediaBrowserServiceCompat 时出现空指针异常
- TextInputLayout 必须在 onProvideAutofillStructure() 上设置提示
- 在 O 上使用 TextView autosize 时出现堆栈溢出
修订版本 26.0.0 Beta 1
(2017 年 5 月)
请注意,26.0.0-beta1 是预发布版本。其 API Surface 可能会发生变化,并且不一定包含支持库最新稳定版本中的功能或 bug 修复。
重要提示: 支持库现在可通过 Google 的 Maven 代码库获取。您无需从 SDK 管理器下载支持代码库。如需了解详情,请参阅支持库设置。
重要更改
FragmentActivity.setSupportMediaController()
和FragmentActivity.getSupportMediaController()
已移除。请使用新的静态MediaControllerCompat.setMediaController()
和MediaControllerCompat.getMediaController()
方法。BottomNavigationView
现在在已选中的项目被再次选中时调用onNavigationItemReselected()
,而不是调用onNavigationItemSelected()
。- 所有
findViewById()
方法的实例现在返回<T extends View> T
而不是View
。此更改具有以下影响- 这可能导致现有代码现在具有歧义的返回类型,例如,如果同时存在接受
findViewById()
调用结果的someMethod(View)
和someMethod(TextView)
。 - 使用 Java 8 源代码时,当返回类型不受约束时(例如,
assertNotNull(findViewById(...)).someViewMethod())
),这需要明确地转换为View
。 - 覆盖非 final 的
findViewById()
方法(例如,Activity.findViewById()
)需要更新其返回类型。
- 这可能导致现有代码现在具有歧义的返回类型,例如,如果同时存在接受
新 API
-
FragmentManager
和Fragment
有一个isStateSaved()
方法,可以查询是否允许进行事务而不丢失状态。这在处理onClick()
事件并执行任何事务之前进行检查时特别有用。 AnimatedVectorDrawableCompat
支持路径运动。路径运动允许一个对象动画师根据一个路径同时更改两个属性;该路径在动画师的 XML 中指定为android:pathData
)。- 基于物理的动画:
- 新的
FlingAnimation
支持以初始速度进行动画并平滑减速。 DynamicAnimation
的子类支持为任何对象进行自定义属性动画。- 现在
SpringAnimation
和FlingAnimation
都可以为 float 值进行动画,而无需关联View
或Object
。
- 新的
-
XML 中的字体支持:
-
ResourcesCompat.getFont
允许加载字体资源(包括字体族 XML),这些资源可与TextView.setTypeface()
一起使用。 - 使用 AppCompat 时,TextView 支持通过
android:fontFamily
XML 属性指定字体资源或字体族 XML。 - 使用 XML 字体族创建具有样式和粗细变化的字体系列。(如果使用支持库类完成此操作,请同时使用
app:
属性和android:
属性。)
-
- 可下载字体
- 新的
FontsContractCompat
允许您从字体提供程序请求字体,而不是将其捆绑到您的应用中。 - 也可以在 XML 中请求字体并在布局中使用。
- 新的
-
表情符号兼容性库:
-
EmojiCompat
可以处理给定的CharSequence
并添加EmojiSpans
。 -
EmojiTextView
和其他用于显示表情符号的微件。 -
FontRequestEmojiCompatConfig
用于从字体提供程序请求表情符号字体。
-
-
自动调整大小的 TextView:
TextViewCompat
中的新方法以及用于控制TextView
中自动调整大小的 XML 属性。
- 支持seek功能的 Leanback 播放控件
-
- 新的
PlaybackTransportRowPresenter
,可呈现带有 SeekBar 的播放控件。 - 新的
PlaybackTransportControlGlue
,可与PlaybackTransportRowPresenter
配合使用并支持 seek。 - 新的基类
PlaybackSeekDataProvider
,用于应用向PlaybackTransportControlGlue
提供 seek 缩略图。
- 新的
- 偏好设置数据存储
-
PreferenceDataStore
现在允许您实现自己的偏好设置存储,使用Preference
和PreferenceManager
中的新方法进行设置。
-
已知问题
- 可下载字体和表情符号兼容性与 Google Play 服务集成仅适用于 Google Play 服务 v11+,目前可通过 Google Play 服务 beta 计划获取。
Bug 修复
-
MediaBrowserCompat.search()
API 不工作 (AOSP issue 262170) -
ViewCompat.postInvalidateOnAnimation()
抛出异常 (AOSP issue 80146) -
在被销毁的 Activity 中的 fragment 会调用
onActivityCreated()
-
在预取期间,
RecyclerView.isComputingLayout()
应该返回 true - 当
Fade
过渡被中断和反转时,View
从头开始动画。(修复从 Android Framework 移植而来。) -
Transition.Fade
忽略View
的初始 alpha 值 (AOSP issue 221820)
修订版本 26.0.0 Alpha 1
(2017 年 3 月)
请注意,26.0.0-alpha1 是预发布版本。其 API Surface 可能会发生变化,并且不一定包含支持库最新稳定版本中的功能或 bug 修复。
重要更改
注意:最低 SDK 版本已提高到 14。因此,许多仅为 API < 14 兼容性而存在的 API 已被弃用。这些 API 的客户端应迁移到其框架等效项,具体请参阅每个已弃用 API 的参考页面中记载的内容。
- support-percent 模块已弃用。此模块的客户端应迁移到新的 ConstraintLayout 微件,该微件在 SDK 管理器中作为单独的工件提供。
- support-fragment 模块不再依赖于 support-media-compat 模块。
新 API
添加了许多新的类、方法和常量,以提供对 O 预览版中添加的平台 API 的向后兼容性支持。
IME_FLAG_NO_PERSONALIZED_LEARNING
:IME 可以监听具有私密模式的应用(例如浏览器)的“无学习”标志。此功能有助于 IME 了解应用是否处于私密模式,以便在该模式下禁用其学习或自适应功能。
如需了解 25.2.0 和 26.0.0-alpha1 之间的完整 API 更改列表,请参阅支持库 API 差异报告。
Bug 修复
- 在某些情况下,简单的
AutoTransition
动画可能会被视图“跳跃”中断。(AOSP issue 221816)
修订版本 25.4.0
(2017 年 6 月)
重要提示: 支持库现在可通过 Google 的 Maven 代码库获取。您无需从 SDK 管理器下载支持代码库。如需了解详情,请参阅支持库设置。
重要更改
- 在
FragmentManager
状态更改期间,不允许调用executePendingTransactions()
、commitNow()
、popBackStackImmediate()
和类似的事务调用。事务的重入执行是不安全的,并且FragmentManager
现在在其状态更改期间强制执行此规则。 - 在发布此支持库版本的同时,我们还发布了 multidex 版本 1.0.2。此版本包括以下重要更改
- 允许对 Instrumentation APK 进行 multidexing。
- 弃用 MultiDexTestRunner(应改用 AndroidJUnitRunner)。
- 提供更好的保护,防止应用出现一些不良的存档提取管理。
- 修复了可能导致临时文件被遗弃的 bug。
- 在并发进程中安装时速度更快。
- 修复了 API 19 和 20 上的安装 bug。
新增和修改的 API
AnimatedVectorDrawableCompat
支持路径变形和路径插值。路径变形允许形状从一个路径(指定为 android:valueFrom
)更改为另一个路径(指定为 android:valueTo
),以提供复杂且吸引人的视觉效果。路径插值允许将 AnimatedVectorDrawableCompat
的插值器指定为路径(在插值器的 XML 中指定为 android:pathData
)。
API 差异
已修复问题
- 连接到 MediaBrowserServiceCompat 时出现空指针异常
- MediaBrowserCompat.search() API 不工作 (AOSP issue 262170)
- 25.3.0 中 BrowseFragment onItemClicked 回调损坏
- 在 25.3.1 的 VerticalGridView 中向上和向下滚动时出现 NullPointerException
- SimpleArrayMap.allocArrays() 中出现 ClassCastException
修订版本 25.3.1
(2017 年 3 月)
已修复问题
SwitchCompat
要求最低 SDK 版本为 14 或更高。(AOSP issue 251302)- 基于物理的动画
updateListener
跳过第一帧。 BottomNavigationView
标签动画损坏。
修订版本 25.3.0
(2017 年 3 月)
重要更改
从 Gradle 构建时,支持库版本元数据将自动添加到 AndroidManifest.xml
中,这简化了在公共构建中跟踪版本。例如
<meta-data android:name="android.support.VERSION" android:value="25.3.0" />
弃用
此版本中已弃用多个方法和类。这些已弃用的 API 将在未来版本中移除,开发者应迁移不再使用它们。有关如何迁移不再使用特定 API 的详情,请参阅其文档。
ExifInterface
- boolean 方法
getLatLong(float[])
已弃用。请改用不带参数并返回double[]
的新方法getLatLong()
。 mediacompat
PlaybackStateCompat.Builder.setErrorMessage(CharSequence)
已弃用。请改用新的方法setErrorMessage(int, CharSequence)
,该方法接受一个错误码和一个可选描述。EXTRA_SUGGESTION_KEYWORDS
已弃用。请改用MediaBrowserCompat
搜索功能。v7.recyclerview
LinearLayoutManager.getInitialItemPrefetchCount()
已重命名为LinearLayoutManager.getInitialPrefetchItemCount()
。旧名称仍然支持,但将在未来版本中移除。
新增和修改的 API
appcompat-v7
- 新的方法
ActionBarDrawerToggle.setDrawerSlideAnimationEnabled(boolean)
简化了禁用导航抽屉切换图标的动画。 customtabs
- 增加了对消息通道的支持。详细信息请参阅
CustomTabsService.requestPostMessageChannel()
和CustomTabsService.postMessage()
参考。 dynamic-animation
- 新的基于物理的动画库,提供一组 API,用于构建动态响应用户输入的动画。
leanback-v17
- 增加了对视差背景的支持。详细信息请参阅
Parallax
参考。 - 增加了
TimePicker
微件,用于在电视界面上选择时间。 mediacompat
- 增加了搜索功能。详细信息请参阅
MediaBrowserCompat.search()
和MediaBrowserServiceCompat.onSearch()
参考。 - 增加了对随机播放和重复模式的支持。详细信息请参阅
MediaSessionCompat.setRepeatMode()
和setShuffleModeEnabled()
参考。
已修复问题
StaggeredGridLayoutManager
抛出IllegalArgumentException
(AOSP issue 230295)RecyclerView
预取无法正确处理已附加但未显示在屏幕上的RecyclerView
- Robolectric 未识别
LinearLayout
- 当
Activity
被销毁时,会为其 fragment 不正确地调用onActivityCreated()
AppCompatImageView
构造函数导致ArrayIndexOutOfBoundsException
- 在
Call.Details
Activity 过渡中 UI 性能低下
修订版本 25.2.0
(2017 年 2 月)
重要更改
已修复问题
- 此版本修复了一个严重的 mediarouter 问题,即使用 A2DP 设备和媒体路由 API 可能导致设备无响应,需要重新启动。
FragmentManager.FragmentLifecycleCallbacks
类现在是静态的。
已修复问题
- 使用屏幕镜像显示幻灯片演示文稿会导致设备断开 Wi-Fi 连接
- 媒体按钮无法正确处理未向
setMediaButtonReceiver()
注册自身的媒体应用 - VectorDrawable 错误与字符串资源相关 (AOSP issue 232407)
- 如果文本通过 XML 设置,
TextInputLayout
会覆盖提示和文本 (AOSP issue 230171) MediaControllerCompat
中的内存泄漏 (AOSP issue 231441)-
RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback()
崩溃 RecyclerView
在回收视图持有者时崩溃 (AOSP issue 225762)- 对于
WearableExtender
中的操作,getAllowGeneratedReplies()
错误地返回 false
修订版本 25.1.1
(2017 年 1 月)
重要提示:支持库修订版本 25.1.1 和 25.1.0 中的 android.support.v7.media.MediaRouter
类存在已知 bug。如果您的应用使用 v7 MediaRouter
,则应更新到 支持库修订版本 25.2.0,该版本修复了此 bug。
重要更改
-
现在可以在事务内部和跨事务优化 Fragment 事务。优化 Fragment 事务操作可以消除取消的操作。例如,假设两个事务一起执行,一个添加 Fragment A,第二个将 Fragment A 替换为 Fragment B。在这种情况下,第一个操作可能会被取消,只添加 Fragment B。这意味着 Fragment A 可能不会经历创建/销毁生命周期。
此优化的副作用是 Fragment 的状态更改可能会超出预期顺序。例如,假设一个事务添加 Fragment A,第二个添加 Fragment B,然后第三个移除 Fragment A。如果不进行优化,Fragment B 可能期望在创建时 Fragment A 也将存在,因为 Fragment A 将在 Fragment B 添加后被移除。进行优化后,Fragment B 不能确定在创建时 Fragment A 将存在,因为 Fragment A 的创建和销毁可能被优化移除。
默认情况下,此优化处于禁用状态。要启用优化,请调用
FragmentTransaction.setAllowOptimization(true)
。 - Fragment 现在可以使用
Fragment.postponeEnterTransition()
和Fragment.startPostponedEnterTransition()
推迟其过渡和动画,直到准备就绪。此 API 类似于与 Activity Transitions 一起使用的Activity.postponeEnterTransition()
和Activity.startPostponedEnterTransition()
。
已修复问题
-
MediaSessionCompatTest
因IllegalArgumentException
而失败 -
25.1.0 中未调用
DetailsFragment.installTitleView()
- Fragment 事务在退出时保留 ghost view (AOSP issue 230679)
-
BottomNavigationView
需要项目图标和文本之间的间距 (AOSP issue 230653) - 新的
PlaybackFragment
和PlaybackSupportFragment
中缺少选定的监听器 -
从支持库版本 25.1.0 开始,模拟器中的
TextInputLayout
焦点无法正确更改 (AOSP issue 230461) - 无法替换
BottomNavigationView
的菜单 (AOSP issue 230343) -
带有
StaggeredGridLayoutManager
的RecyclerView
在处理全跨度项时崩溃 (AOSP issue 230295) - 使用
setCallback(null)
时,MediaSessionCompat
中发生崩溃 -
PlaybackGlueHostOld
和PlaybackSupportGlueHostOld
在播放行更改时不会通知回调 -
PlaybackOverlayFragment
示例/test
无法开始播放 -
API 15 上
RecyclerViewFocusRecoveryTest
失败 - “截屏”行聚焦在屏幕顶部
-
API 15 上
RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback()
崩溃 -
onSubactionClicked()
中的setActions()
损坏 -
回收某些视图持有者时,
RecyclerView
崩溃
修订版本 25.1.0
(2016 年 12 月)
重要提示:支持库修订版本 25.1.1 和 25.1.0 中的 android.support.v7.media.MediaRouter
类存在已知 bug。如果您的应用使用 v7 MediaRouter
,则应更新到 支持库修订版本 25.2.0,该版本修复了此 bug。
重要更改
- 嵌套
RecyclerView
微件的客户端(例如,水平滚动列表的垂直滚动列表)可以通过向内部RecyclerView
微件的布局管理器提示在屏幕上滚动之前需要准备多少项来获得显著的性能优势。调用LinearLayoutManager.setInitialPrefetchItemCount(N)
,其中 N 是每个内部项可见的视图数量。例如,如果您的内部水平列表一次显示至少三个半项视图,您可以通过调用LinearLayoutManager.setInitialPrefetchItemCount(4)
来提高性能。这样做允许RecyclerView
在外部RecyclerView
滚动时尽早创建所有相关的视图,这显著减少了滚动期间的卡顿量。 FragmentActivity.setSupportMediaController()
和FragmentActivity.getSupportMediaController()
已弃用。请使用新的静态MediaControllerCompat.setMediaController()
和MediaControllerCompat.getMediaController()
方法。- 当客户端通过 appcompat tinting 指定微件 tint 时(例如,
appcompat:buttonTint
),客户端负责提供所有必要的状态(例如,“禁用”、“按下”等)。这与使用框架 tinting 指定微件 tint 的方式一致。
新增和修改的 API
- 增加了 ExifInterface 支持库。该库解除了对从 JPEG 和原始格式文件中读取 Exif 信息以及在 JPEG 图像文件上设置 Exif 信息的捆绑支持。
Snackbar
已重构,允许应用显示自定义内容。BaseTransientBottomBar
是新的基类,它暴露了一般的滑动和动画行为。- 增加了新的 leanback.media 包,其中包含用于将媒体播放器集成到 Android TV 应用中的助手类。
- 向 v7 preference 支持库添加了带有可自定义布局和属性的
SeekBarPreference
。 - 向 v4 支持库添加了
ArraySet
类。该类对应于 API level 23 中引入的框架ArraySet
类。 RecyclerView
RecyclerView 项预取改进- 嵌套的
RecyclerView
预取使能够从另一个滚动RecyclerView
内的RecyclerView
中预取内容,并提供 API 来控制预取的数量 - 为自定义
LayoutManager
对象添加了 API,以便在滚动和滑动期间启用预取 - 改进了预取,以便在帧间时间内尽可能多地执行创建/绑定工作
- 嵌套的
已修复问题
- 密码可见性切换未能通过无障碍测试。
- Appcompat 在 pre-L 设备上不遵循
state_enabled
。 - 向
RecyclerView
添加了焦点恢复机制。这还修复了在 Android TV 设备等上使用 DPAD 导航时,支持偏好设置 fragment 焦点损坏的问题。 - Leanback:当禁用 header 且 adapter 为空时,BrowseFragment 崩溃。
- Appcompat:
AlertDialog
过宽。 InputContentInfoCompat
在应该调用releasePermission()
时调用了requestPermission()
。MediaBrowserCompat
崩溃。- 当可见性设置为
GONE
时,CoordinatorLayout 会测量/布局视图。 - 在 API level 24 以下无法对
AnimatedVectorDrawableCompat
进行染色 - Leanback 库触发了虚假的 lint 错误
- Palette 库导致在每个 API level 上测试失败
- Leanback 上
RecyclerView
测试失败 RecyclerView
在回收视图持有者时崩溃 (AOSP issue 225762)- 后退栈中的 fragment 未调用
Fragment.onDestroy()
- 折叠时未绘制
CollapsingToolbarLayout
scrim CoordinatorLayout.offsetChildByInset()
抛出IllegalArgumentException
- 对
RecyclerView
项进行动画会分离内部的RecyclerView
,阻止未来的预取 - 已附加的
RecyclerView
项无法嵌套预取 - 在第一次布局期间,嵌套
RecyclerView
项的预取数据被丢弃 - 如果两个拖动事件到达同一位置,
RecyclerView
预取失败 - 在 RenderThread 渲染时,
RecyclerView
应推测性地布局 - 夜间模式配置的颜色资源转换为 Drawables 后并非总是能从 Resources 缓存中正确清除
FloatingActionButton
:以编程方式设置 BackgroundTintList 无法正常工作 (AOSP issue 227428)TextInputLayout
:未为 ErrorView 设置字体 (AOSP issue 227803)- 低于 API 23 时,
TextInputLayout
总是回退到浅色错误颜色 (AOSP issue 221992) - 当指针离开时,
FloatingActionButton
显示为按下状态
公开的 bug 修复完整列表可在 AOSP Issue Tracker 上找到。
弃用
此版本中已弃用多个方法和类。这些已弃用的 API 将在未来版本中移除,开发者应迁移不再使用它们。有关如何迁移不再使用特定 API 的详情,请参阅其文档。
-
android.support.design.widget
-
android.support.v17.leanback.app
BackgroundManager.getDefaultDimLayer()
BackgroundManager.getDimLayer()
BackgroundManager.setDimLayer()
MediaControllerGlue.MediaControllerGlue(Context,PlaybackOverlayFragment,int[])
MediaControllerGlue.MediaControllerGlue(Context,PlaybackOverlayFragment,int[],int[])
PlaybackControlGlue.PlaybackControlGlue(Context,PlaybackOverlayFragment,int[])
PlaybackControlGlue.PlaybackControlGlue(Context,PlaybackOverlayFragment,int[],int[])
PlaybackControlGlue.getFragment()
PlaybackControlGlue.getOnItemViewClickedListener()
PlaybackControlGlue.onRowChanged()
PlaybackControlGlue.pausePlayback()
PlaybackControlGlue.skipToNext()
PlaybackControlGlue.skipToPrevious()
PlaybackControlGlue.startPlayback()
PlaybackControlSupportGlue
PlaybackOverlayFragment
PlaybackOverlaySupportFragment
-
android.support.v17.leanback.widget
-
android.support.v4.app
FragmentActivity.getSupportMediaController()
FragmentActivity.setSupportMediaController()
修订版本 25.0.1
(2016 年 11 月)
已修复问题
TextInputLayout
密码切换现在默认禁用,以避免不必要地覆盖开发者指定的 end drawable。可以通过passwordToggleEnabled
XML 属性手动启用它。BottomNavigationView
项现在为单行,以匹配 Material 设计规范。- 如果布局管理器为 null,
RecyclerView
在预取期间崩溃。 BottomNavigationView
海拔高度现在设置正确。(AOSP issue 226182)- 以编程方式添加菜单项时,
BottomNavigationView
崩溃。(AOSP issue 225731) - 修复了
TextInputLayout
左+右复合 drawable。(AOSP issue 225836) RecyclerView
在回收视图持有者时崩溃。(AOSP issue 225762)- Leanback:TalkBack 在分屏视图中频繁说“null”一词。
RecyclerView
:Android Studio 中的渲染问题。(AOSP issue 225753)- 在
onNavigationItemSelected()
返回 false 后,BottomNavigationView
仍将菜单项显示为选中状态。(AOSP issue 225898) - ForwardingListener 抛出
NoSuchMethodError
。(AOSP issue 225647) - 在 IME 提取模式下,
TextInputEditText
不显示提示。(AOSP issue 221880)
公开的 bug 修复完整列表可在 AOSP Issue Tracker 上找到。
修订版本 25.0.0
(2016 年 10 月)
重要更改
ContextCompat
构造函数已设置为 protected。此类别不应公开实例化,但可通过支持库进行扩展,以用于更高的 API 级别。ActivityCompat
构造函数已设置为 protected。此类别不应公开实例化,但可通过支持库进行扩展,以用于更高的 API 级别。getReferrer(Activity)
已设置为静态。-
android.support.design.widget.CoordinatorLayout.Behavior.isDirty(CoordinatorLayout, V)
已移除。任何客户端实现的此方法都应移除。 -
android.support.v4.media.session.MediaSessionCompat.obtain(Context, Object)
已移除。其用法应替换为名称更恰当的方法fromMediaSession()
。 -
android.support.v4.media.session.MediaSessionCompat.QueueItem.obtain(Object)
已移除。其用法应替换为名称更恰当的方法MediaSessionCompat.QueueItem#fromQueueItem
。 -
android.support.v7.widget.Space
已移除。其用法应替换为android.support.v4.widget.Space
。
新 API
-
android.support.design.widget.BottomNavigationView
类实现了 Material Design 规范中的底部导航模式。 - 新的
android.support.v13.view.inputmethod
包中包含的类,用于访问 API level 13 后引入的android.view.inputmethod.InputConnection
功能。 -
android.v7.widget.RecyclerView.DividerItemDecoration
类为项目之间的垂直或水平分隔线提供了一个基础实现。 android.support.v7.app.NotificationCompat
中新增的装饰样式DecoratedCustomViewStyle
和DecoratedMediaCustomViewStyle
,是平台 API 24 中新增类的镜像。
已修复问题
公共错误修正的完整列表可在 AOSP Issue Tracker 上查阅。
修订版本 24.2.1
2016 年 9 月
已修复问题
FloatingActionButton
不能再锚定到CoordinatorLayout
的间接子项。(AOSP 问题 220250)- 当
fitsSystemWindows=true
时,CollapsingToolbarLayout
内部的图片缩放不正确。(AOSP 问题 220389) - 当
Snackbar
显示和关闭时,CoordinatorLayout
会抛出IndexOutOfBoundsException
。(AOSP 问题 220762) TextInputLayout
无法解析错误文本颜色。(AOSP 问题 220305)BatchedCallback.onMoved()
调用了BatchedCallback.onInserted()
。(AOSP 问题 220309)TextInputLayout
覆盖了右侧复合 drawable。(AOSP 问题 220728)
公共错误修正的完整列表可在 AOSP Issue Tracker 上查阅。
修订版本 24.2.0
2016 年 8 月
版本 24.2.0 包含以下变更:
注意:版本 24.2.0 不再支持 Android 2.2 (API level 8) 及更低版本。仅用于服务于这些系统版本的类和方法现已标记为 deprecated,不应再使用。这些 deprecated 的类和方法可能会在未来的版本中移除。
v4 支持库拆分
在此版本中,v4 支持库已拆分为几个更小的模块:
-
support-compat
- 为新的框架 API 提供兼容性包装器,例如
Context.getDrawable()
和View.performAccessibilityAction()
。 -
support-core-utils
- 提供了一些工具类,例如
AsyncTaskLoader
和PermissionChecker
。 -
support-core-ui
- 实现各种与 UI 相关的组件,例如
ViewPager
、NestedScrollView
和ExploreByTouchHelper
。 -
support-media-compat
- 向下移植媒体框架的一部分,包括
MediaBrowser
和MediaSession
。 -
support-fragment
- 向下移植 Fragment 框架。此模块依赖于
support-compat
、support-core-utils
、support-core-ui
和support-media-compat
。
为了向后兼容,如果您在 Gradle 脚本中列出 support-v4
,您的 APK 将包含所有这些模块。但是,为了减小 APK 大小,建议您仅列出应用所需的特定模块。
API 更新
- 使用 Custom Tabs 的客户端可以控制是否打开 Instant Apps。(注意:Instant Apps 尚未全面可用。)要启用或禁用 Instant Apps,请调用
CustomTabsIntent.Builder.setInstantAppsEnabled()
或指定EXTRA_ENABLE_INSTANT_APPS
。默认情况下,当 Instant Apps 功能可用时,Custom Tabs 将默认启用 Instant Apps。 TextInputLayout
添加了对 material design 规范中的密码可见性切换的支持。- 新的
android.support.transition
包将 Transitions 框架向后移植到 API levels 14 及更高版本。欲了解更多信息,请参阅android.support.transition
参考文档。 - Custom Tabs 支持库添加了在辅助工具栏中使用
RemoteViews
的支持。现有的setToolbarItem()
方法现已 deprecated。 AppCompatResources
添加了通过使用新的getDrawable()
方法,从资源 ID 加载<vector>
(在 API level 9 及更高版本) 或<animated-vector>
(在 API level 11 及更高版本) 的功能。CoordinatorLayout
现在支持定义插入视图,并指定其他视图应避开这些插入视图。这使得应用能够复制类似于FloatingActionButton
避开Snackbar
的行为模式,但适用于任何任意视图子项。欲了解更多信息,请参阅LayoutParams.insetEdge
和LayoutParams.dodgeInsetEdges
参考文档。- 新的
DiffUtil
类可以计算两个集合之间的差异,并可以分发适合由RecyclerView.Adapter
使用的更新操作列表。 -
RecyclerView.OnFlingListener
已添加,用于支持响应 flings 的自定义行为。SnapHelper
类提供了一个专门用于捕捉子视图的实现,而LinearSnapHelper
类扩展了此实现,以提供类似于ViewPager
的中心对齐捕捉行为。 - Custom Tabs 库现在允许客户端通过调用
CustomTabsIntent.setAlwaysUseBrowserUI()
请求标准浏览器 UI,而不是 Custom Tabs UI。当浏览器默认使用 Custom Tabs UI 但用户更喜欢标准浏览器 UI 时,此行为非常有用。
行为变更
- 如果您使用 appcompat 库的昼夜功能,系统现在会在昼夜模式更改时自动重新创建您的活动(无论是由于时间变化,还是由于调用了
AppCompatDelegate.setLocalNightMode()
)。 - 如果状态栏是半透明的,
Snackbar
现在会在导航栏下方绘制。
MediaRouter 库
蓝牙设备不再列为媒体路由。音频路由到蓝牙设备现在完全由 Android 系统级别控制。
弃用
Deprecated 的类和方法在未来的版本中可能会被移除。您应尽快迁移,停止使用这些 API。
- 以下类上的几个方法仅在 API 8 及更低版本中需要,不应再使用。请改用框架实现。
android.support.v4.view.KeyEventCompat
: 替换为KeyEvent
android.support.v4.view.MotionEventCompat
: 使用MotionEvent
android.support.v4.view.ViewCompat
: 使用View
android.support.v4.view.ViewConfigurationCompat
: 使用ViewConfiguration
-
AccessibilityServiceInfoCompat.getDescription()
已 deprecated,并推荐使用AccessibilityServiceInfoCompat.loadDescription()
,该方法返回正确的本地化描述。 - 您不应直接实例化
ActivityCompat
类。非静态方法getReferrer(Activity)
在即将发布的版本中将变为静态方法。 CoordinatorLayout.Behavior.isDirty()
已 deprecated,不再由CoordinatorLayout
调用。任何实现以及对此方法的调用都应移除。MediaSessionCompat.obtain()
已 deprecated,并替换为名称更恰当的方法fromMediaSession()
。MediaSessionCompat.QueueItem.obtain()
已 deprecated,并替换为名称更恰当的方法fromQueueItem()
。- 几个抽象类已 deprecated,并替换为更能反映其框架等价物的接口。
AccessibilityStateChangeListenerCompat
已替换为AccessibilityManagerCompat.AccessibilityStateChangeListener
接口。OnCloseListenerCompat
已替换为SearchViewCompat.OnCloseListener
接口。OnQueryTextListenerCompat
已替换为SearchViewCompat.OnQueryTextListener
接口。
CustomTabsSession.setToolbarItem()
已 deprecated,并替换为基于 RemoteViews 的setSecondaryToolbarViews()
。
Bug 修复
以下已知问题已在版本 24.2.0 中修复:
- 确保在第一次测量通过之前调用
setRefreshing(true)
时显示SwipeRefreshLayout
指示器 (AOSP 问题 77712) - 防止
TabLayout
在更改页面时闪烁 (AOSP 问题 180454) - 在 API level 11 及更低版本上,解封
SavedState
时避免出现ClassNotFoundException
(AOSP 问题 196430)
公共错误修正的完整列表可在 AOSP Issue Tracker 上查阅。
修订版本 24.1.1
2016 年 7 月
已修复问题
- 修复了 24.1.0 版本中影响支持库之间共享资源 ID 的问题。此问题导致依赖于包含资源(如 design 和 appcompat)的支持库的应用遇到资源 ID 不匹配引起的问题。
修订版本 24.1.0
2016 年 7 月
- v4 支持库的变更
-
NotificationCompat.Action.WearableExtender
添加了新的getHintDisplayActionInline()
和setHintDisplayActionInline()
方法,以兼容 Android Wear 2.0 预览版。这些方法允许应用程序指定应在通知中以内联方式显示某个操作。- 调用
Fragment.setUserVisbileHint()
不会再导致 Fragment 变为 started,如果提示已添加到尚未提交的FragmentTransaction
中。这会影响覆盖setUserVisbileHint()
并在调用super.setUserVisibleHint()
后假定 Fragment 处于特定生命周期状态的FragmentPagerAdapter
用户。欲了解更多信息,请参阅Fragment.setUserVisbileHint()
的文档参考页面。
已修复问题
- TabLayout.setCustomView(null) 导致 NullPointerException (AOSP 问题 214753)
- TabLayout 错误地高亮显示自定义选项卡 (AOSP 问题 214316)
- AppCompatTextHelper 使用了错误排序的属性数组 (AOSP 问题 214366)
- 使用自定义 ContextWrapper 时无法从 drawable 容器 XML 中引用 VectorDrawable (AOSP 问题 214055)
- ViewDragHelper.saveLastMotion() 抛出 ArrayIndexOutOfBoundsException (AOSP 问题 212945)
- BottomSheetBehavior 在使用 setState(STATE_EXPANDED) 时展开到旧的内容高度 (AOSP 问题 213660)
- CollapsingToolbarLayout 不处理带有顶部或底部边距的可固定子项 (AOSP 问题 213001)
- Leanback 浏览标题不支持 RTL 对齐 (AOSP 问题 213461)
- PagerTabStrip 由于缺少继承的注解而消失 (AOSP 问题 213359)
- 使用布尔值设置条件标志时,数据绑定抛出 NullPointerException (AOSP 问题 191841)
- CoordinatorLayout 对 setFitsSystemWindows() 无响应 (AOSP 问题 212720)
- BottomSheetBehavior 在设置初始状态时崩溃 (AOSP 问题 203114)
- 如果页面索引值很大,ViewPager 会跳过页面 (AOSP 问题 211734)
- 当内容动态变化时,BottomSheetBehavior 不起作用 (AOSP 问题 205226)
修订版本 24.0.0
2016 年 6 月
- v4 支持库的变更
-
- 添加了
Fragment.commitNow()
用于同步提交 - 为多方对话添加了
NotificationCompat.MessagingStyle
- 添加了
NotificationManagerCompat.areNotificationsEnabled()
和getImportance()
MediaSessionCompat
现在镜像MediaSession
的功能,不再自动调用setMediaButtonReceiver()
注意:只有版本 24.0.0 中的
MediaBrowserServiceCompat
才能向前兼容 API 24 以后的未来 Android 版本。如果您使用的是早期版本,请更新到此版本以确保兼容性。 - 添加了
- v7 appcompat 库的变更
-
- 添加了支持从 XML 引用带主题的
ColorStateList
对象的功能
- 添加了支持从 XML 引用带主题的
- Design Support Library 的变更
-
- 改进了
AppBarLayout
使用StateListAnimator
处理高度的方式
- 改进了
- v17 Leanback 库的变更
-
- 添加了
OnboardingFragment
,用于提供首次运行时的欢迎和设置流程
- 添加了
- custom tabs 的变更
-
- 添加了对为辅助工具栏提供
RemoteViews
层次结构的支持 - 添加了
CustomTabsClient.connectAndInitialize()
用于一行代码实现预热
- 添加了对为辅助工具栏提供
修订版本 23.4.0
2016 年 5 月
- v4 支持库的变更
- v7 appcompat 库的变更
-
- 添加了
AppCompatDelegate.setCompatVectorFromResourcesEnabled()
方法,用于在运行 Android 4.4 (API level 19) 及更低版本的设备上重新启用在DrawableContainer
对象中使用矢量 drawable。欲了解更多信息,请参阅 AppCompat v23.2 — 矢量时代。 - 修复了 API 23 中
AppCompatDelegate.setDefaultNightMode()
未在 API level 23 中加载正确资源的问题。(AOSP 问题 206573) - 修复了可能导致
NullPointerException
的问题。(AOSP 问题 207638)
- 添加了
- Design Support Library 的变更
-
- 修复了
TextInputLayout
在 API level 21 - 22 上调用setErrorEnabled(false)
后未清除错误着色的问题。(AOSP 问题 202829) - 修复了
FloatingActionButton
在禁用动画时未返回的问题。(AOSP 问题 206416) - 修复了
AppBarLayout
的 snap 功能与
滚动标志一起使用时的问题。(AOSP 问题 207398)scroll
|enterAlways
|enterAlwaysCollapsed
|snap
- 修复了
- 变更内容Vector Drawable 库
-
- 修复了在 API level 23 上
VectorDrawableCompat
未在TextView
中正确渲染的错误。(AOSP 问题 206227)
- 修复了在 API level 23 上
修订版本 23.3.0
2016 年 4 月
- v4 支持库的变更
-
- 添加了
AppLaunchChecker
,用于帮助跟踪用户过去如何启动您的应用。hasStartedFromLauncher()
会告知您用户之前是否从主屏幕启动过您的应用,或者它是否仅通过其他方式启动(例如,查看特定网页 URL)。 - 修复了
MediaBrowserServiceCompat.mConnections
中的内存泄漏问题。(AOSP 问题 205220) - 修复了
ViewPager
在翻页时未考虑页面边距的问题。(AOSP 问题 203816) Fragment.onRequestPermissionsResult()
现在会传递给子 Fragment。
- 添加了
- v7 appcompat 库的变更
-
- 修复了
AppCompatSpinner
中可能导致出现多个弹出窗口的问题。(AOSP 问题 205052) - 修复了无边框按钮的着色问题。(AOSP 问题 202967)
- 修复了
AppCompatDialogFragment
和AlertDialog
之间的兼容性问题。(AOSP 问题 204805) - 还原了
TintResources
中导致内存和配置问题的更改。(AOSP 问题 205236)
- 修复了
- v7 mediarouter library 的变更
-
- 修复了
MediaRouteControllerDialog
音量滑块的行为。(AOSP 问题 202299)
- 修复了
- v7 Preference 库的变更
-
- 修复了
PreferenceFragmentCompat
在指定dividerHeight
时会崩溃的问题。(AOSP 问题 204778)
- 修复了
- v7 recyclerview library 的变更
-
- 修复了当可见项目的范围缩小时,
RecyclerView
不会调用滚动回调的错误。(AOSP 问题 200987) - 修复了当
RecyclerView
位于线性布局中、带权重且包含图片时会冻结的错误。(AOSP 问题 203276) - 修复了
OrientationHelper.getStartAfterPadding()
中的崩溃问题。(AOSP 问题 180521) - 修复了使用
android:nestedScrollingEnabled
时导致的崩溃问题。(AOSP 问题 197932)
- 修复了当可见项目的范围缩小时,
- Design Support Library 的变更
-
- 修复了隐藏的底部工作表会处理触摸事件的错误。(AOSP 问题 203654)
- 修复了当
fitsSystemWindows
为 true 时BottomSheetBehavior
的布局问题。(AOSP 问题 203057) - 修复了
Snackbar
的辅助功能问题。(AOSP 问题 182145) - 修复了
Snackbar
滑动时的崩溃问题。(AOSP 问题 203924) - 修复了
AppBarLayout
与enterAlways
结合使用时的错误。(AOSP 问题 203661) - 修复了
TextInputLayout
不必要地清除了EditText
对象的背景颜色过滤器的问题。(AOSP 问题 203357)
修订版本 23.2.1
2016 年 3 月
- v4 支持库的变更
-
- 修复了在 API level 17 到 19 上
DrawableCompat.wrap()
和LayerDrawable
中的异常问题。(AOSP 问题 201817) - 修复了
ViewDragHelper.shouldInterceptTouchEvent()
中的ArrayIndexOutOfBoundsException
。(AOSP 问题 182262) - 修复了
ViewPager
中与大小更改相关的滚动计算错误。 - 修复了在未设置
DrawerLayout.DrawerListener
的情况下调用DrawerLayout.removeDrawerListener()
时出现的NullPointerException
。(AOSP 问题 202478) - 修复了
ViewPager
滚动时未正确设置AccessibilityEvent
参数的错误。 - 修复了使用
Drawable.wrap()
时设备旋转期间导致的延迟问题。(AOSP 问题 201924)
- 修复了在 API level 17 到 19 上
- v7 appcompat 库的变更
-
- 还原了对矢量资源的依赖,以便使用 appcompat library 的开发者不会被迫使用
VectorDrawable
及其相关的构建标志。 - 修复了 Night Mode 和 API level 23 的兼容性问题。(AOSP 问题 201910)
- 修复了
SwitchCompat
和 API level 7 的兼容性问题。(AOSP 问题 201942) - 修复了在 Resources 对象中传播配置值的问题 Issue 201928
- 修复了在 API level 21 及以下版本中,
android.support.v7.app.NotificationCompat.MediaStyle
取消按钮变为不可见的兼容性问题。(AOSP 问题 202156) - 修复了在 API level 21 及以下版本中,
AppCompatSpinner
的兼容性崩溃问题。(AOSP 问题 202246) - 修复了
app:textAllCaps = "false"
样式不起作用的问题。(AOSP 问题 202117) - 修复了恢复
SearchView
时导致的崩溃问题。(AOSP 问题 201836) - 修复了使用 AppCompat 对 drawable 资源进行着色时发生的内存泄漏问题。(AOSP 问题 202379)
- 修复了在 API level 11 及以下版本中,
KeyEvent
的问题。(AOSP 问题 202939)
- 还原了对矢量资源的依赖,以便使用 appcompat library 的开发者不会被迫使用
- v7 cardview library 的变更
- v7 recyclerview library 的变更
-
- 修复了与各种测量规范方法相关的错误。(AOSP 问题 201856)
- 缩短了
RecyclerView
在计算布局或滚动时不允许适配器更改的锁定周期。(AOSP 问题 202046) - 修复了对视野外的项目调用
notifyItemChanged()
时发生的崩溃问题。(AOSP 问题 202136) - 修复了
RecyclerView.LayoutManager
在同一测量通过中添加和移除视图时发生的崩溃问题。(AOSP 问题 193958)
- v7 mediarouter library 的变更
-
- 修复了在 API level 17 上调用
MediaRouter.getInstance()
时发生的崩溃问题。(AOSP 问题 180654)
- 修复了在 API level 17 上调用
- v17 Leanback Library 的变更
-
- 修复了
GridLayout.onAddFocusables()
中导致选择错误项目的问题。 - 修复了
GuidedStepFragment
操作在折叠后消失的问题。
- 修复了
- Design Support Library 的变更
-
- 修复了由选项卡池化导致的
TabLayout
崩溃问题。(AOSP 问题 201827) - 修复了
NavigationView
中导致选择了错误颜色的错误。(AOSP 问题 201951) - 修复了
setBackgroundTintList()
不再能够更改背景颜色的错误。(AOSP 问题 201873) - 修复了当与
android:fitsSystemWindows = “true”
一起使用时,AppBarLayout
没有完全滚动出视图的问题。(AOSP 问题 201822) - 修复了
BottomSheetDialog
未正确显示短内容视图的问题。(AOSP 问题 201793) - 修复了当内部内容更改时
BottomSheetDialogFragment
会不规则移动的问题。(AOSP 问题 202125) - 修复了 TextInputLayout 计数器中的崩溃 link
- 修复了
TextInputLayout.getCounterMaxLength()
恢复已保存状态时发生的崩溃问题。(AOSP 问题 202375) - 修复了在使用非
CoordinatorLayout
视图的已保存状态恢复CoordinatorLayout
时发生的ClassCastException
。
- 修复了由选项卡池化导致的
- VectorDrawableCompat 的变更
-
- 修复了读取
android:tintMode
时读取了错误变量的错误。(AOSP 问题 201907)
- 修复了读取
修订版本 23.2.0
2016 年 2 月
- v4 支持库的变更
-
- 添加了
MediaBrowserCompat
用于MediaBrowser
支持,以及MediaBrowserServiceCompat
用于MediaBrowserService
支持。这对于连接媒体应用的后台服务与 UI 组件,以及集成 Android Auto 和 Android Wear 而无需 API level 21 或更高版本非常有用。 - 系统现在会为嵌套的
FragmentActivity
调用onActivityResult()
。
- 添加了
- v7 AppCompat library 的变更
-
- 为 API level 14 及更高版本添加了 Night Mode 功能。根据一天中的时间或应用特定设置在 Material Light 和 Material Dark 主题之间切换。
-
- 昼夜主题可以在这里找到:
<sdk>/extras/android/support/v7/appcompat/res/values/themes_daynight.xml
AppCompatDelegate.setDefaultNightMode()
:通过传递以下常量之一设置应用的默认模式-
MODE_NIGHT_AUTO
MODE_NIGHT_NO
MODE_NIGHT_YES
MODE_NIGHT_FOLLOW_SYSTEM
AppCompatDelegate.setLocalNightMode()
:覆盖本地应用组件的夜间模式设置。AppCompatDelegate.getDefaultNightMode()
:返回默认夜间模式。
- 昼夜主题可以在这里找到:
- v7 mediarouter library 的变更
-
MediaRouteControllerDialog
现在正确应用自定义应用主题颜色。
- Design support library 的变更
-
- 添加了对底部工作表的支持。一个交互插件
BottomSheetBehavior
允许CoordinatorLayout
的子视图充当底部工作表。基类BottomSheetCallback
提供回调以监控底部工作表事件。
- 添加了对底部工作表的支持。一个交互插件
- CustomTabs support library 的变更
-
- Chrome Custom Tabs 现在允许应用除了现有的顶部操作按钮外,还在底部栏包含操作按钮。
CustomTabsIntent.Builder.addToolBarItem()
:向自定义标签页添加一个操作按钮。您可以使用此方法添加多个按钮。CustomTabsSession.setToolBarItem()
:更新工具栏项目的视觉效果。此方法仅在给定有效 ID 且浏览器会话位于前台时才会成功。
- 添加了 VectorDrawable 支持库
-
- 添加了类
-
VectorDrawableCompat
AnimatedVectorDrawableCompat
- 为运行在 API level 7 或更高版本上的应用添加了对
VectorDrawable
资源的支持。API level 11 或更高版本还支持AnimatedVectorDrawable
资源。矢量资源可能比图像资源小得多,应通过减少支持多种设备屏幕所需的资源数量来帮助减小应用大小。 - 此库现在是 v7 AppCompat 库的依赖项,允许开发者和 AppCompat 轻松使用矢量 drawable。要在
ImageButton
或ImageView
中使用VectorDrawableCompat
,请使用app:srcCompat
XML 属性或setImageResource()
方法。 - 要在 API level 20 或更低版本上保持引用属性 ID,请将以下
appt
标志添加到您的build,gradle
文件中 -
- 如果您使用 Android Plugin for Gradle 1.5.0 或更低版本进行构建,请将以下内容添加到您的
build.gradle
文件中 -
android { defaultConfig { // Stops the Gradle’s automatic rasterization of vectors generatedDensities = [] } // Flag that tells aapt to keep the attribute ids aaptOptions { additionalParameters "--no-version-vectors" } }
- 如果您使用 Android Plugin for Gradle 2.0.0 或更高版本进行构建,请将以下内容添加到您的
build.gradle
文件中 -
android { defaultConfig { vectorDrawables.useSupportLibrary = true } }
- 如果您使用 Android Plugin for Gradle 1.5.0 或更低版本进行构建,请将以下内容添加到您的
- v17 Leanback Library 的变更
-
- 为
GuidedStepFragment
添加了新功能,该组件引导用户完成决策或一系列决策 -
- 为
GuidedAction
添加了按钮操作 GuidedStepFragment.setButtonActions()
:设置用户可以从 Actions 视图中选择的GuidedAction
按钮列表。- 描述字段现在可编辑
-
GuidedAction.Builder.descriptionEditable()
:传入true
时,将操作的描述设置为可编辑。GuidedAction.getEditDescription()
:将可编辑的描述作为CharSequence
返回。
- 添加了下拉子操作列表
-
GuidedAction.setSubActions()
:将GuidedAction
列表设置为子操作的下拉菜单。
- 为
- 添加了
GuidedDatePickerAction
小部件用于DatePicker
功能 -
- 使用年、月、日列选择日期,并具有可自定义的范围。
GuidedDatePickerAction.Builder
:GuidedDatePickerAction
对象的构建器类。GuidedDatePickerAction.Builder.datePickerFormat(String datePickerFormat)
:通过传递适当的三字符String
(例如“YMD”
或“MDY”
)设置所需的日期格式。或者,使用datePickerFormat
XML 属性。
- 为
- v7 RecyclerView library 的变更
-
RecyclerView
现在有一个称为 AutoMeasure 的可选功能,允许RecyclerView.LayoutManager
轻松包装内容或处理由RecyclerView
的父级提供的各种测量规范。它支持RecyclerView
的所有现有动画功能。-
- 如果您有自定义的
RecyclerView.LayoutManager
,请调用setAutoMeasureEnabled(true)
以开始使用新的 AutoMeasure API。所有内置的RecyclerView.LayoutManager
对象默认启用 auto-measure。 RecyclerView.LayoutManager
不再忽略某些RecyclerView.LayoutParams
设置,例如滚动方向上的MATCH_PARENT
。注意:这些取消的限制可能会导致您的布局出现意外行为。确保您指定了正确的布局参数。
- 如果您有自定义的
- 更新带有 payload 信息的
RecyclerView.ViewHolder
时,DefaultItemAnimator
现在会禁用更改动画。 - 您现在可以修改
ItemTouchHelper
逃逸速度来控制滑动敏感度。为了使滑动更容易或更难,请覆盖getSwipeEscapeVelocity(float defaultValue)
并修改defaultValue
。
修订版本 23.1.1
2015 年 11 月
- v7 recyclerview library 的变更:
-
- 修复了在执行
ItemTouchHelper
实用类提供的滑动移除操作然后添加项目时发生的崩溃问题。(问题 190500)
- 修复了在执行
- v7 preference library 的变更:
-
- 修复了 ProGuard 使用问题。(问题 183261)
- v17 Leanback Support library 的变更:
-
- 修复了此库中的一些内部问题。
- Design Support library 的变更:
-
- 为
NavigationView
类添加了getHeaderView
方法。 - 修复了在运行 Android 4.0 (API level 15) 及更低版本的设备上
FloatingActionButton
对象透明背景的问题。(问题 183315)
- 为
修订版本 23.1.0
2015 年 10 月
- v4 Support library 的变更:
-
- 为
NestedScrollView
小部件添加了OnScrollChangedListener
接口支持。它允许您在滚动 X 或 Y 位置更改时接收回调。 - 添加了
MediaButtonReceiver
类,用于将接收到的播放控制转发到管理MediaSessionCompat
类的服务。MediaSessionCompat
类有一个构造函数,可以自动在清单中找到媒体按钮接收器。媒体按钮接收器是处理硬件或蓝牙控制的播放控制的关键部分。
- 为
- v7 appcompat library 的变更:
-
- 添加了 Material Design
Seekbar
和ImageButton
小部件。 - 更新了
ImageView
小部件以支持着色功能。 - 更新了
SwitchCompat
小部件的外观。
- 添加了 Material Design
- v7 mediarouter library 的变更:
-
- 为
MediaRouteChooserDialog
类添加了以下功能 - 在发现媒体路由提供程序时显示加载页面。
- 包含设备类型图标,以便更轻松地识别设备。
- 根据当前应用中的使用频率对路由进行排序。
- 支持横屏模式。
- 为
MediaRouteControllerDialog
类添加了以下功能 - 识别屏幕投射并提供适当的描述。
- 支持各种专辑封面大小和纵横比,并异步加载封面。
- 根据应用的主色自动选择内容颜色。
- 根据设备上可用的屏幕空间调整对话框布局。
- 支持横屏模式。
- 为
- v7 palette library 的变更:
-
- 添加了
setRegion()
方法,以支持从Bitmap
对象的特定区域提取颜色。
- 添加了
- v7 recyclerview library 的变更:
-
- 为
ItemAnimator
类添加了改进的动画 API,以实现更好的自定义 - 更改动画不再强制要求
ViewHolder
对象有两个副本,这使得项目内容动画成为可能。此外,ItemAnimator
对象决定是重用同一个ViewHolder
对象还是创建一个新的。 - 新的信息记录 API 使
ItemAnimator
类能够灵活地在布局生命周期的正确位置收集数据。此信息随后会传递给动画回调。
- 为这种向后不兼容的 API 更改提供了一个简单的过渡计划
- 如果您以前扩展了
ItemAnimator
类,您可以将您的基类更改为SimpleItemAnimator
,并且您的代码应该像以前一样工作。SimpleItemAnimator
类通过包装新的 API 提供旧的 API。 ItemAnimator
类中的一些方法已移除。以下代码将不再编译
Kotlin
recyclerView.itemAnimator.supportsChangeAnimations = false
Java
recyclerView.getItemAnimator().setSupportsChangeAnimations(false)
您可以将其替换为
Kotlin
val animator: SimpleItemAnimator? = recyclerView.itemAnimator as? SimpleItemAnimator animator?.supportsChangeAnimations = false
Java
ItemAnimator animator = recyclerView.getItemAnimator(); if (animator instanceof SimpleItemAnimator) { ((SimpleItemAnimator) animator).setSupportsChangeAnimations(false); }
- 为
- v7、v14 和 v17 Preference Support library 的变更
-
- 移除了控制
EditText
对话框的 API。
- 移除了控制
- v17 Leanback Support library 的变更:
-
- 为支持库添加了
GuidedStepFragment
类的一个版本(继承自android.support.v4.app.Fragment
),并改进了动画和过渡。 - 更新了
GuidedStepFragment
类,使其可以放置在现有内容之上。 - 添加了对
SearchFragment
类中不同类型的搜索补全进行注解的功能。 - 为
VerticalGridFragment
类添加了错位滑动过渡支持。
- 为支持库添加了
- Design Support library 的变更:
-
- 为
TextInputLayout
小部件添加了字符计数支持。 - 通过添加
SCROLL_FLAG_SNAP
常量,为AppBarLayout
类添加了边缘捕捉支持。当滚动结束时,如果视图仅部分可见,则视图会被捕捉并滚动到其最近的边缘。 - 通过使用
app:actionLayout
属性或MenuItemCompat.setActionView()
方法,为NavigationView
类添加了对自定义视图的支持。
- 为
- Custom Tabs Support library 的变更:
-
- 为
CustomTabsIntent
类添加了enableUrlBarHiding()
方法。它允许客户端自定义在向下滚动时是否应自动隐藏 URL 栏。 - 为
CustomTabsSession
类添加了setActionButton()
方法。它允许客户端在已启动的自定义选项卡中更改自定义操作按钮的图标。 - 为
CustomTabsCallback
类的onNavigationEvent
方法添加了TAB_SHOWN
和TAB_HIDDEN
常量作为新事件。
- 为
修订版本 23.0.1
2015 年 9 月
- v7 和 v14 Preference Support library 的变更
-
- 添加了 Material Design 布局和样式文件。(问题 183376)
- v7 appcompat library 的变更:
- Design Support library 的变更:
-
- 修复了
AppBarLayout
类,使其现在在旋转后正确绘制。(问题 183109) - 修复了
TabLayout
类,使其现在在用户滑动后点击时表现正确。(问题 183123)
- 修复了
- Custom Tabs Support library 的变更:
-
- 将版本支持的
minSdkVersion
值从 16 降低到 15。 - 添加了从意图生成
CustomTabsSessionToken
的方法。
- 将版本支持的
修订版本 23
2015 年 8 月
- 添加了新的支持库
有关支持库变更的完整列表,请参阅支持库 API 差异报告。
修订版本 22.2.1
2015 年 7 月
- Design Support library 的变更:
-
- 为
FloatingActionButton
类添加了hide()
和show()
方法,用于以编程方式触发动画。 - 为
Snackbar
类添加了LENGTH_INDEFINITE
常量,用于显示 Snackbar,直到其关闭或显示另一个 Snackbar。此外,添加了setActionTextColor(int)
和setActionTextColor(ColorStateList)
方法。 - 为
TabLayout
类添加了getSelectedTabPosition()
方法,用于检索当前选定的选项卡。 - 为
android.support.v7.app.NotificationCompat.MediaStyle
类提供了完全流畅的 API,用于方法链式调用。 - 为
RecyclerView
添加了批量插入项目的便捷方法。
- 为
有关支持库变更的完整列表,请参阅支持库 API 差异报告。
修订版本 22.2.0
2015 年 5 月
- 添加了Design Support library:
-
- 添加了
TextInputLayout
,用于将EditText
提示和错误文本显示为浮动标签。 - 添加了
FloatingActionButton
,用于将界面上的主要操作实现为浮动操作按钮,支持默认大小或迷你尺寸。 - 添加了
Snackbar
,用于在动画 Snackbar 中提供带有可选操作的轻量级反馈。 - 添加了
TabLayout
,用于实现固定和可滚动的选项卡,并易于与ViewPager
集成。 - 添加了
NavigationView
,用于实现导航抽屉内容,包括通过菜单资源 inflated 菜单项的能力。 - 添加了
CoordinatorLayout
,一个通用布局,用于构建兄弟视图之间的依赖关系,并允许通过CoordinatorLayout.Behavior
轻松实现组件之间的滚动响应。许多 Design Library 组件都依赖于作为CoordinatorLayout
的子项。 - 添加了
AppBarLayout
,一个用于Toolbar
和其他视图(例如TabLayout
)的容器,用于通过滚动出屏幕、在向下滚动时变为可见或在滚动出/入屏幕前折叠/展开来响应滚动事件。 - 添加了
CollapsingToolbarLayout
,用于控制Toolbar
如何折叠。Toolbar 可以通过以下方式折叠:在折叠时将组件固定到屏幕顶部,引入组件(如ImageView
)的视差滚动,或在视图部分折叠时添加内容 scrim 颜色。
- 添加了
- v4 support library 的变更:
-
- 为
AccessibilityEventCompat
类添加了getContentChangeTypes()
和setContentChangeTypes()
方法以及相关的更改类型字段,用于处理辅助功能事件。 - 为
PlaybackStateCompat
类添加了getActiveQueueItemId()
、getCustomActions()
和getExtras()
方法以及相关的状态字段,用于从队列中获取自定义操作。 - 为
PlaybackStateCompat.Builder
类添加了addCustomAction()
、setActiveQueueItemId()
和setExtras()
方法,用于向播放状态添加自定义操作。 - 为
PlaybackStateCompat.CustomAction
类添加了fromCustomAction()
和getCustomAction()
方法,用于从队列中获取自定义操作。 - 为
ViewCompat
类添加了isAttachedToWindow()
、offsetLeftAndRight()
和offsetTopAndBottom()
方法,用于处理视图。 - 为
ViewPager
类添加了addOnPageChangeListener()
、clearOnPageChangeListeners()
和removeOnPageChangeListener()
方法,用于响应页面更改。Deprecated 了
ViewPager.setOnPageChangeListener()
方法。 - 为
ViewParentCompat
类添加了notifySubtreeAccessibilityStateChanged()
方法,用于通知视图父级其后代之一的辅助功能状态已更改。 - 为
ViewPropertyAnimatorCompat
类添加了translationZ()
、translationZBy()
、z()
和zBy()
方法,用于添加动画。
- 为
- v7 appcompat library 的变更
-
- 为
AppCompatActivity
、AppCompatCallback
和AppCompatDialog
类添加了onWindowStartingSupportActionMode()
方法,用于处理从当前窗口启动的操作模式。 - 为
AppCompatDelegate
类添加了isHandleNativeActionModesEnabled()
和setHandleNativeActionModesEnabled()
方法,用于处理原生操作模式。
- 为
有关支持库变更的完整列表,请参阅支持库 API 差异报告。
修订版本 22.1.0
2015 年 4 月
- annotations library 的变更:
-
- 添加了 Annotations 库,以提供对增强的代码检查的支持。注解作为元数据标签附加到变量、参数和返回值,以检查方法返回值、传递的参数以及局部变量和字段。
- v4 support library 的变更:
-
- 添加了
ColorUtils
类,以提供一组与颜色相关的实用方法。 - 为
DrawableCompat
类添加了unwrap()
和wrap()
方法,允许您在所有 API level 4 或更高版本的设备上使用setTint()
、setTintList()
和setTintMode()
。 - 添加了
TraceCompat
类,用于将跟踪事件写入系统跟踪缓冲区,然后可以使用 Systrace 工具收集和可视化这些事件。 - 添加了
CircularIntArray
类,用于创建循环整数数组数据结构。 - 为
CircularArray
类添加了clear()
、removeFromStart()
和removeFromEnd()
方法。此外,将此类的现有方法更改为非 final。 - 添加了
InputDeviceCompat
作为辅助类,用于访问InputDeviceCompat
类中的数据。 - 添加了
LayoutInflaterCompat
类作为辅助类,用于访问LayoutInflaterCompat
类中的数据,并添加了LayoutInflaterFactory
接口。 - 添加了类、方法和接口以支持嵌套滚动。
- 添加了
NestedScrollingChildHelper
和NestedScrollingParentHelper
辅助类,用于实现嵌套滚动的父视图和子视图。 - 添加了
NestedScrollingChild
接口,供View
子类实现。 - 添加了
NestedScrollingParent
和ScrollingView
接口,以支持滚动操作并提供滚动相关的 API。 - 向
ViewGroupCompat
类添加了getNestedScrollAxes()
方法。 - 向
ViewParentCompat
类添加了方法以支持嵌套滚动。 - 添加了
NestedScrollView
类,用于在新版本和旧版本 Android 上支持嵌套滚动的父级和子级。
- 添加了
- 向
MotionEventCompat
类添加了方法和常量,用于获取轴值和事件源。 - 更新了
AccessibilityNodeInfoCompat
类,添加了用于错误、内容失效和标签的方法。 - 添加了以下用于动画的插值类:
FastOutLinearInInterpolator
、FastOutSlowInInterpolator
、LinearOutSlowInInterpolator
、LinearOutSlowInInterpolator
和PathInterpolatorCompat
。 - 添加了
Space
类,用于在通用布局中的组件之间创建间隙。此类别在 Gridlayout 库中已弃用。 - 添加了
TextViewCompat
类,用于访问TextView
中的功能。 - 向
EdgeEffectCompat
类中的onPull()
方法添加了位移参数。
- 添加了
- v7 appcompat library 的变更
-
- 为 appcompat 控件添加了着色支持,包括
AppCompatAutoCompleteTextView
、AppCompatButton
、AppCompatCheckBox
、AppCompatCheckedTextView
、AppCompatEditText
、AppCompatMultiAutoCompleteTextView
、AppCompatRadioButton
、AppCompatRatingBar
、AppCompatSpinner
和AppCompatTextView
。 - 更新了
AppCompatActivity
作为使用支持库操作栏功能的 Activity 的基类。此类取代了已弃用的ActionBarActivity
。 - 添加了
AppCompatCallback
接口,用于实现 AppCompat 进行回调。 - 添加了
AppCompatDelegate
抽象类作为可用于将 AppCompat 支持扩展到任何 Activity 的委托。 - 添加了
AppCompatDialog
类作为 AppCompat 主题对话框的基类。 - 添加了微调器样式
AlertDialog
和AlertDialog.Builder
类,以提供 AppCompat 主题的AlertDialog
。 - 添加了
Palette.Builder
类,用于生成Palette
实例。- 向
Palette
类添加了from(Bitmap)
方法,以使用返回的Palette.Builder
实例开始生成调色板。 - 弃用了
Palette.generate()
和Palette.generateAsync()
方法。
- 向
- 向
GridLayout.Spec
类添加了getAbsoluteAlignment()
方法。 - 弃用了使用
app:theme
设置Toolbar
样式的方式。现在,对于所有 API 级别 7 及更高版本的设备上的工具栏,以及所有 API 级别 11 及更高版本的设备上的所有控件,您都可以使用android:theme
。
- 为 appcompat 控件添加了着色支持,包括
- v17 leanback 库的变更
-
- 添加了
GuidedStepFragment
、GuidanceStylist
和GuidedActionsStylist
,以支持创建多步决策流程。
- 添加了
- v7 recyclerview 库的变更
-
- 添加了
SortedList
类,用于按列表顺序显示项目并提供列表更改通知。 - 添加了
SortedListAdapterCallback
类,可以将排序列表绑定到RecyclerView.Adapter
类。
- 添加了
- v8 renderscript 库的变更
-
- 添加了
ScriptIntrinsicHistogram
类,可用作直方图过滤器。 - 添加了
ScriptIntrinsicResize
类,用于执行二维分配的缩放。
- 添加了
- v4 support library 的变更:
-
- 更新了
getDrawable()
方法,以返回指定特定资源 ID、屏幕密度和主题的可绘制对象。 - 添加了
setImportantForAccessibility()
方法,以便您可以指示视图是否应触发无障碍功能事件。 - 添加了
getStatusBarBackgroundDrawable()
方法,以便您可以获取状态栏背景可绘制对象。 - 向
NotificationCompat.CarExtender.UnreadConversation
类添加了方法,以便 Android Auto 消息传递应用可以检索额外的通知数据。 - 添加了
getProgressCircleDiameter()
方法,以返回圆形布局的直径。 - 将默认
DrawerLayout
状态栏颜色更改为colorPrimaryDark
。
- 更新了
- v7 appcompat library 的变更
- v17 leanback 库的变更
-
- 添加了
getRecycledPoolSize()
和setRecycledPoolSize()
方法,以允许自定义回收池大小。 - 向布局宽度设置添加了
WRAP_CONTENT
属性,以支持标题图标的包装内容。 - 在 XML 中定义了
R.transition
,以改善过渡更新。 - 启用了对从右到左布局的支持。
- 向
PlaybackOverlayFragment
类添加了播放和暂停媒体键事件支持。 - 向
BrowseFragment
类和DetailsFragment
类添加了进入和返回过渡。 - 添加了
replace()
方法,用于替换对象适配器数组中的项目。
- 添加了
- v7 mediarouter library 的变更
-
- 更新了 Google Cast 图标以使用 Material Design 样式。
- 更新了
MediaRouter
对话框中使用的所有图标以使用 Material Design 样式。
- v7 recyclerview 库的变更
-
- 向
RecyclerView
类添加了getlayoutPosition()
和getadapterPosition()
方法。 - 弃用了
RecyclerView
类中的classgetChildPosition()
和findViewHolderForPosition()
方法。 - 弃用了
RecyclerView.ViewHolder
类中的getPosition()
方法。 - 弃用了
RecyclerView.LayoutParams
类中的getViewPosition()
方法。
- 向
- v4 support library 的变更:
- v4 support library 的变更:
-
- 添加了
NotificationCompat.CarExtender
类以支持 Android Auto 通知扩展。
- 添加了
- v7 appcompat library 的变更
-
- 添加了
PopupMenu
构造函数以支持新的弹出菜单。 - 向
Toolbar
类添加了折叠图标描述的支持。 - 更新了
SearchView
控件以支持显示commitIcon
。 - 从
Toolbar
类中移除了buttonGravity
属性。
- 添加了
- v7 cardview 库的变更
-
- 添加了
setCardBackgroundColor(ColorStateList)
API 以支持更改CardView
的背景颜色。 - 更改了
CardView
,使其更准确地报告其不透明度值,值为TRANSLUCENT
。
- 添加了
- v7 recyclerview 库的变更
-
- 向
RecyclerView
类添加了TOUCH_SLOP_DEFAULT
和TOUCH_SLOP_PAGING
常量,以支持分页的触摸斜率配置。
- 向
- v17 leanback 库的变更
-
- 添加了对生成 v4 代码片段的支持。
- 更改了
CardView
的次要文本颜色。
- 添加了 multidex 支持库,以支持 Android 5.0 之前的多 Dalvik 可执行 (DEX) 文件,用于多 dex 文件支持。
- v4 support library 的变更:
-
- 添加了对运行 Android 5.0(API 级别 21)设备的
Fragment
过渡支持。请注意,过渡对运行 Android 4.4 及更低版本的设备没有影响。 - 添加了
DocumentFile
,以在使用文档树时简化从File
的过渡。然而,与 Android 4.4(API 级别 19)中添加的平台DocumentsContract
API 相比,此类需要更多的处理开销。因此,当在 Android 4.4 及更高版本上运行时,您应切换到使用DocumentsContract
。
- 添加了对运行 Android 5.0(API 级别 21)设备的
- v7 appcompat library 的变更
-
- 添加了对 Material Design 用户界面的支持。
- 添加了
Toolbar
,它将ActionBar
的功能泛化,以便在应用布局中使用。 - 更新了
ActionBarDrawerToggle
,其中包含菜单到箭头的动画。 - 更新了通用用户界面控件,以便在运行 Android 5.0 之前的设备上通过主题属性进行着色。
- 添加了
SwitchCompat
,它是 Android 4.0(API 级别 14)中添加的Switch
控件的回溯移植。
- 新的 v7 cardview 库
-
- 添加了
CardView
控件,它提供了与 Material Design 兼容的实现,用于显示数据项目。
- 添加了
- 新的 v7 recyclerview 库
-
- 添加了
RecyclerView
控件,它提供了一个灵活的列表视图,用于提供大型数据集的有限窗口。
- 添加了
- 新的 v7 palette 库
-
- 添加了
Palette
类,允许您从图像中提取显著颜色。
- 添加了
- 新的 v17 leanback 库
-
- 添加了对构建电视用户界面的支持,包括
BrowseFragment
、DetailsFragment
和PlaybackOverlayFragment
。有关使用这些用户界面控件的更多信息,请参阅构建电视播放应用。
- 添加了对构建电视用户界面的支持,包括
- v4 支持库的变更
-
- 在
NotificationCompat.WearableExtender
中添加了对 Android Wear 的扩展通知支持,允许您在通知中指定可穿戴设备特有的功能。 - 添加了
NotificationCompat.Action.WearableExtender
,允许在可穿戴通知上添加操作。 - 添加了
NotificationManagerCompat
,允许您发布可正确支持可穿戴设备功能的通知。 - 添加了
RemoteInput
,允许手持设备从可穿戴设备上显示的通知接收语音输入。 - 改进了
SwipeRefreshLayout
中的触摸反馈处理。
- 在
- v4 支持库的变更
-
- 添加了
SwipeRefreshLayout
类,使用户能够通过垂直滑动手势刷新视图内容。 - 修复了导航抽屉的无障碍功能问题。
- 添加了
- v7 appcompat 库的变更
-
- 修复了操作栏的背景问题。
- v4 支持库的变更
-
- 通过添加打印的异步处理,改进了
PrintHelper
。 - 修复了
DrawerLayout
类对addChildrenForAccessibility()
方法的近似处理。 - 修复了
ActionBarDrawerToggle
中的滑动可绘制对象镜像问题。 - 修复了从集合迭代器中移除项目时出现的差一问题。
- 通过添加打印的异步处理,改进了
- v7 mediarouter 库的变更
-
- 通过在
MediaRouteProvider.ProviderMetadata
中使用完整的组件名称,改进了路由识别。 - 更新了
MediaRouteChooserDialog
,以隐藏禁用的路由。
- 通过在
- v8 renderscript 库的变更
-
- 添加了 RenderScript thunking 层错误传播的支持。
- v4 支持库的变更
-
- 添加了对外部存储 API 的支持,包括
getObbDirs()
、getExternalFilesDirs()
、getExternalCacheDirs()
和getStorageState()
。这些辅助方法在运行 Android 4.3(API 级别 18)及更早版本的设备上始终返回单个文件对象。在运行 Android 4.4(API 级别 19)及更高版本时,这些方法可能返回多个文件对象。 - 添加了
PrintHelper
类,可与打印 API 配合使用,以最少的代码打印图像。 - 添加了弹出菜单的拖动打开用户界面支持。更多信息,请参阅
PopupMenuCompat
和ListPopupWindowCompat
。 - 通过向
AccessibilityNodeProviderCompat
添加findFocus()
方法以及向AccessibilityNodeInfoCompat
添加getLiveRegion()
方法,改进了无障碍功能支持。 - 添加了辅助类
ScaleGestureDetectorCompat
,用于访问新的缩放手势方法。 - 修复了
ActionBarDrawerToggle
在从右到左语言显示中的问题。 - 修改了
AutoScrollHelper
选项,使其可以消耗触摸事件或允许它们传递给其他视图。
- 添加了对外部存储 API 的支持,包括
- v7 mediarouter 库的变更
-
- 添加了对媒体播放队列、设置 HTTP 头部值和媒体播放时长的支持。
- 添加了明确的开始、获取和结束会话操作,用于通过媒体路由器明确管理媒体播放会话。
- v4 支持库的变更
-
- 用户界面
- 添加了
BidiFormatter
,用于处理混合了从右到左和从左到右格式化文本的字符串。 - 修改了
ViewPager
,使其更好地处理初始布局处理中页面宽度为零的情况。 - 修改了
DrawerLayout
和SlidingPaneLayout
,使其在项目代码编辑期间不因测量而抛出异常。
- 添加了
- 无障碍功能
- 添加了
ExploreByTouchHelper
,以简化自定义视图无障碍功能的实现。 - 修复了
ViewPager
错误填充TYPE_VIEW_SCROLLED
无障碍功能事件的问题。 - 修复了
ViewPager
在填充无障碍功能事件时出现的空指针异常。 - 通过将
CharSequence
输入更改为String
对象,简化了AccessibilityNodeInfoCompat
。 - 弃用了使用
Object
作为输入的AccessibilityRecordCompat
构造函数。
- 添加了
- 媒体
- 添加了
TransportMediator
辅助类,用于管理媒体传输控制,例如播放、暂停、跳过和其他媒体操作。 - 添加了
DisplayManagerCompat
,用于管理向一个或多个设备显示屏的显示输出。
- 添加了
- 其他变更
- 添加了
WakefulBroadcastReceiver
辅助类,用于实现检测设备唤醒事件并将工作传递给Service
的常见模式,同时确保在交接完成前设备不会进入休眠状态。 - 向
AsyncTaskLoader
添加了两个新的 API,commitContentChanged()
和rollbackContentChanged()
,以帮助处理数据更改的后台更新(随后取消)。
- 添加了
- 用户界面
- 新的 v7 appcompat 库
- 新的 v7 mediarouter 库
-
添加了一个新的 mediarouter 库,为 Google Cast 开发者预览版提供支持。v7 mediarouter 库 API 提供了一种控制从当前设备到外部屏幕、扬声器和其他目标设备的媒体频道和流的路由方式,兼容 Android 2.1(API 级别 7)及更高版本。更多信息请参阅v7 mediarouter 库。
Support Library r18 中引入的 v7 mediarouter 库 API 在后续修订版本中可能会发生变化。目前,我们建议仅结合Google Cast 开发者预览版使用此库。
- v4 支持库的变更
-
- 添加了
DrawerLayout
,用于创建可以从窗口边缘拉出的导航抽屉。 - 添加了
SlidingPaneLayout
控件,用于创建适当适应各种屏幕尺寸的关联摘要和详细视图。 - 添加了
ActionBarDrawerToggle
,作为连接DrawerLayout
和ActionBar
功能的一种方式。 - 添加了
ViewDragHelper
,作为在父视图中拖动视图的新通用组件。 - 添加了
ScrollerCompat
,以提供Scroller
和OverScroller
兼容性支持。 - 添加了
FileProvider
,以允许在应用程序之间共享私有文件。 - 更新了
ViewPager
,如果在未调用notifyDataSetChanged()
的情况下修改了相关的PagerAdapter
类,则会抛出异常。 - 修复了
ViewPager
子视图绘制顺序问题。 - 修复了
GestureDetectorCompat
在轻触超时和长按事件之间分派丢失的onSingleTapConfirmed(MotionEvent)
调用问题。
- 添加了
- 新的 v7 gridlayout 库
-
- 添加了
GridLayout
,以提供对GridLayout
布局对象的支持。 - 添加了
android.support.v7.widget.Space
,可用于在GridLayout
布局对象中创建空白区域。
- 添加了
- v4 支持库的变更
-
- 改进了
ViewPager
的交互行为。 - 修复了可能导致
ViewPager
选择错误页面的错误。 - 修复了在
ViewPager
布局期间使用removeView()
方法的问题。 - 修复了
SearchViewCompat
的问题,即使用返回按钮关闭不会清除搜索文本。此修复仅适用于主机 API 级别 14 及更高版本。
- 改进了
- v4 支持库的变更
-
- 用户界面
- 添加了对嵌套
Fragment
类的支持。 - 改进了
FragmentManager
调试。 - 修复了
FragmentTabHost
中的问题,即片段和标签交互可能导致ListView
状态丢失。 - 修复了
FragmentStatePagerAdapter
中用户可见提示的问题。 - 向
ViewPager
添加了PageTransformer
接口,以允许应用程序为滚动提供自定义过渡行为。 - 添加了当前版本到
TaskStackBuilder
的新功能和修复。 - 修复了
PagerTitleStrip
,使其正确跟踪当前使用的PagerAdapter
。 - 修复了
PagerTitleStrip
的显示闪烁、定位和文本裁剪问题。 - 修复了
PagerTabStrip
,使其在绘制下划线时正确遵循内边距。
- 添加了对嵌套
- 无障碍功能
- 向
AccessibilityEventCompat
添加了对新无障碍功能手势和触摸事件类型的支持。 - 向
ViewCompat
添加了对新无障碍功能 API 的支持。 - 向
ViewCompat
添加了对performAccessibilityAction()
方法的支持。
- 向
- 添加了对
GestureDetectorCompat
的手势支持。 - 添加了使用新的
AtomicFile
类对文件执行原子操作的支持。 - 向
IntentCompat
添加了对完整make
方法集的支持。 - 在
LruCache
实用类中添加了trimToSize()
方法。 - 更新了
ConnectivityManagerCompat
,以从CONNECTIVITY_ACTION
广播中获取 NetworkInfo。
- 用户界面
- v4 支持库的变更
-
- 通过对
NotificationCompat
的补充,添加了对 Android 4.1(API 级别 16)中引入的通知功能的支持。
- 通过对
- v4 支持库的变更
-
- 用户界面支持
- 添加了
PagerTabStrip
支持,提供了超出PagerTitleStrip
的增强功能。 - 修复了
PagerTitleStrip
和PagerTabStrip
的各种错误,包括setAllCaps
选项、标题对齐、外观改进、最小宽度限制和触摸导航问题。 - 添加了对
ViewPager
页面间隙的支持,这有助于ViewPager
类为具有大水平滚动范围的内容(例如地图)提供分页支持。 - 修复了
ViewPager
的许多错误,包括大小和数据集更改问题、页面定位、用户交互、滚动跟踪和键盘导航问题。 - 修复了
Fragment
的许多错误,包括当目标片段不再存在时对onActivityResult()
的正确处理,向不可见片段分派选择事件,改进了FragmentTransaction.replace()
行为,并为移出视图的片段添加了更好的状态处理。 - 向
ViewCompat
添加了对postOnAnimation()
方法的支持。 - 更新了
NavUtils
,以便在可用时使用 Android 4.1(API 级别 16)的“向上”导航功能。
- 添加了
- 无障碍功能
- 更新了无障碍功能支持类,包括
AccessibilityNodeInfoCompat
,以遵循 Android 4.1(API 级别 16)中的修复。 - 添加了对
ViewPager
中无障碍功能滚动操作的支持。
- 更新了无障碍功能支持类,包括
- 常规改进
- 更新了
TaskStackBuilder
,以反映 Android 4.1(API 级别 16)中的 API 更改。 - 增强了
TaskStackBuilder
,使其可以从 Service 中使用。 - 向
ShareCompat
添加了对EXTRA_HTML_TEXT
的支持。 - 更新了
NotificationCompat.Builder
,以支持setNumber()
方法。 - 在
ConnectivityManagerCompat
中添加了对isActiveNetworkMetered()
方法的支持。
- 更新了
- 用户界面支持
- v4 支持库的变更
-
- 修复了
TaskStackBuilder
生成的PendingIntent
对象的 Intent 标志问题。 - 从 gridlayout 库项目中移除了未使用的属性,以确保该库可以在 API 级别 7 及更高版本上构建。
- 为 gridlayout 库项目添加了
.classpath
和.project
文件。
- 修复了
- v4 支持库的变更
-
- 添加了
ShareCompat
,它为社交分享应用程序提供了发送和接收内容的辅助类,包括用于将共享数据归因于源应用的新元数据。此类还提供了与 Android 4.0 中新增的ShareActionProvider
的兼容集成。 - 添加了
TaskStackBuilder
,以提供对实现Android 设计导航指南的支持。这些新增内容包括在各个版本中实现操作栏“向上”按钮的方法。有关此模式的示例实现,请参阅 (
) 中的 AppNavigation 示例。/samples/ /AppNavigation - 添加了
NotificationCompat.Builder
,以提供 Android 3.0 的Notification.Builder
辅助类的兼容实现,用于创建标准化的系统通知。
- 添加了
- v4 支持库的变更
-
- ViewPager 的变更
- 添加了对
ViewPager
的额外装饰视图支持。装饰视图可以在 XML 布局中作为页面的子视图提供。 - 添加了
PagerAdapter.getPageTitle()
,用于为页面提供标题字符串,默认情况下每个页面都没有标题。 - 添加了
PagerTitleStrip
,一个非交互式标题带,可以作为 ViewPager 的子级添加。开发者可以提供文本外观和颜色,以及布局大小和重力信息。 - 更新了
PagerAdapter
方法以采用 ViewGroup 对象而不是 View,以避免适配器实现中的类转换。 - 更新了
ViewPager
以使用 Launcher 风格的滑动行为。 - 用户界面交互和测试自动化错误修复。
- 添加了对
- 对片段的支持
- 将
setStartDeferred()
方法更改为setUserVisibleHint(boolean)
。 - 添加了屏幕外页面的延迟启动以提高性能。
- 将
- 对无障碍功能 API 的支持
- 更新了
AccessibilityDelegateCompat
方法以返回空列表而不是 null。 - 添加了 v4 示例所需的新 API。
- 更新了
- ViewPager 的变更
- v4 支持库的变更
-
- 对无障碍功能 API 的支持
- 添加了
AccessibilityDelegateCompat
以支持View.AccessibilityDelegate
。 - 添加了
AccessibilityEventCompat
以支持AccessibilityEvent
。 - 添加了
AccessibilityManagerCompat
以支持AccessibilityManager
。 - 添加了
AccessibilityNodeInfoCompat
以支持AccessibilityNodeInfo
。 - 添加了
AccessibilityRecordCompat
以支持AccessibilityRecord
。 - 添加了
AccessibilityServiceInfoCompat
以支持AccessibilityServiceInfo
。 - 添加了
ViewGroupCompat
以支持ViewGroup
中的无障碍功能特性。 - 修改了
ViewCompat
以支持View
中的无障碍功能特性。
- 添加了
- ViewPager 的变更
- 添加了页面间距的支持。可以提供可选的
Drawable
来填充间距。 - 添加了对
EdgeEffect
的支持。 - 添加了对键盘导航的支持
- 添加了支持以控制在当前页面的两侧保留多少页。
- 改进了触摸物理特性。
- 用户界面行为错误修复。
- 添加了页面间距的支持。可以提供可选的
- 对无障碍功能 API 的支持
- v4 支持库的变更
-
- 添加了
EdgeEffectCompat
以支持EdgeEffect
。 - 添加了
LocalBroadcastManager
,允许应用程序在不进行全局广播的情况下轻松在一个应用程序内注册和接收意图。 - 在
ViewCompat
中添加了支持,用于检查和设置 Android 2.3 及更高版本View
的过度滚动模式。 - 片段 API 的变更
- 添加了新的 API 以控制新菜单的可见性。
- 添加了自定义动画 API。
- 在
FragmentActivity
中添加了 API,以保留自定义的、非配置实例数据。 - 各种错误修复。
- 修复了
Loader
的错误,该错误导致在运行 Froyo 及更旧平台版本时取消AsyncTask
时出现问题。支持代码现在使用其自己的AsyncTask
版本,以在所有平台版本上保持相同的行为。
- 添加了
- v4 支持库的变更
-
- 添加了对
Fragment.SavedState
的支持 - 添加了
MotionEventCompat
以支持较新的MotionEvent
API - 添加了
VelocityTrackerCompat
以支持较新的VelocityTracker
API - 添加了
ViewConfigurationCompat
以支持较新的ViewConfiguration
API - 所有新的 API(仅在支持库中可用)允许您创建具有水平分页的用户界面,允许用户在内容视图之间左右滑动。支持此功能的类包括:
ViewPager
:一个ViewGroup
,用于管理用户可以滑动切换的子视图的布局。PagerAdapter
:一个适配器,用于使用代表每个页面的视图填充ViewPager
。FragmentPagerAdapter
:PagerAdapter
的扩展,用于在片段之间翻页。FragmentStatePagerAdapter
:PagerAdapter
的扩展,用于在片段之间翻页,该扩展使用了库对Fragment.SavedState
的支持。
- 添加了对
- 新的 v13 支持库
-
- 包括
FragmentPagerAdapter
和FragmentStatePagerAdapter
以支持水平分页。这些 API 与 v4 支持库中添加的 API 完全相同,但依赖于 Android 3.2 中的其他平台组件。如果您正在为 Android 3.2 及更高版本开发(v4 库中的所有其他 API 在 API 级别 13 中已可用),请使用此库而不是 v4。
- 包括
- v4 库的变更
-
- 支持片段动画
- 修复
Fragment.onActivityResult()
错误
修订版本 22
2015 年 3 月
修订版本 21.0.3
2014 年 12 月
修订版本 21.0.2
2014 年 11 月
修订版本 21.0.1
2014 年 11 月
修订版本 21
2014 年 10 月
修订版本 20
2014 年 7 月
修订版本 19.1.0
2014 年 3 月
修订版本 19.0.1
2013 年 12 月
修订版本 19
2013 年 10 月
修订版本 18
2013 年 7 月
修订版本 13
2013 年 5 月
修订版本 12
2013 年 2 月
修订版本 11
2012 年 11 月
修订版本 10
2012 年 8 月
修订版本 9
2012 年 6 月
修订版本 8
2012 年 4 月
修订版本 7
2012 年 3 月
修订版本 6
2011 年 12 月
注意:支持库 API 的引用现已随框架引用提供,例如:android.support.v4.app
。
修订版本 5
2011 年 12 月
修订版本 4
2011 年 10 月
修订版本 3
2011 年 7 月
修订版本 2
2011 年 5 月
修订版本 1
2011 年 3 月
随 v4 库一起首次发布。