此页面提供有关较旧的支持库软件包版本的详细信息。有关最新的支持库版本,请参阅 最近的支持库版本。
版本 26.0.0 Beta 2
(2017 年 6 月)
请注意,26.0.0-beta2 是预发布版本。它的 API 表面可能会发生变化,并且不一定包含来自支持库最新稳定版本的特性或错误修复。
重要提示:支持库现在可通过 Google 的 Maven 存储库获取。您无需从 SDK 管理器下载支持存储库。有关更多信息,请参阅 支持库设置。
新 API
- 新的
JobIntentService
类,可帮助开发人员以符合新的 Android O 后台执行限制 的方式安排任务。
API 差异
错误修复
- Android O SDK 丢失导致 TextView 中的斜体丢失
- 连接到 MediaBrowserServiceCompat 时出现空指针异常
- TextInputLayout 必须在 onProvideAutofillStructure() 上设置提示
- 在 O 上使用 TextView 自动调整大小会导致堆栈溢出
版本 26.0.0 Beta 1
(2017 年 5 月)
请注意,26.0.0-beta1 是预发布版本。它的 API 表面可能会发生变化,并且不一定包含来自支持库最新稳定版本的特性或错误修复。
重要提示:支持库现在可通过 Google 的 Maven 存储库获取。您无需从 SDK 管理器下载支持存储库。有关更多信息,请参阅 支持库设置。
重要更改
FragmentActivity.setSupportMediaController()
和FragmentActivity.getSupportMediaController()
已被删除。请使用新的静态MediaControllerCompat.setMediaController()
和MediaControllerCompat.getMediaController()
方法。BottomNavigationView
现在在选择已选定项目时调用onNavigationItemReselected()
,而不是调用onNavigationItemSelected()
。- 所有
findViewById()
方法的实例现在返回<T extends View> T
而不是View
。此更改具有以下影响- 这可能会导致现有代码现在具有不明确的返回类型,例如,如果同时存在
someMethod(View)
和someMethod(TextView)
,它们都接受对findViewById()
的调用的结果。 - 使用 Java 8 源语言时,这需要在返回类型不受约束的情况下进行显式强制转换为
View
(例如,assertNotNull(findViewById(...)).someViewMethod())
。 - 非最终
findViewById()
方法的重写(例如,Activity.findViewById()
)将需要更新其返回类型。
- 这可能会导致现有代码现在具有不明确的返回类型,例如,如果同时存在
新 API
-
FragmentManager
和Fragment
具有一个isStateSaved()
方法,允许查询事务是否允许在没有状态丢失的情况下执行。这在处理onClick()
事件时特别有用,以在执行任何事务之前进行检查。 AnimatedVectorDrawableCompat
支持路径运动。路径运动允许一个对象动画器根据一个路径同时更改两个属性;该路径在动画器的 XML 中指定为android:pathData
。- 基于物理的动画:
- 新的
FlingAnimation
支持使用初始速度进行动画,并平滑减速。 DynamicAnimation
的子类支持为任何对象进行自定义属性动画。SpringAnimation
和FlingAnimation
现在可以对浮点值进行动画,而无需与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 属性。
- 在
- 带有搜索支持的 Leanback 播放控件
-
- 新增的
PlaybackTransportRowPresenter
,用于呈现带有 SeekBar 的播放控件。 - 新增的
PlaybackTransportControlGlue
,它与PlaybackTransportRowPresenter
配合使用并支持搜索。 - 新增的基类
PlaybackSeekDataProvider
,供应用向PlaybackTransportControlGlue
提供搜索缩略图。
- 新增的
- 首选项数据存储
-
PreferenceDataStore
现在允许您实现自己的首选项存储,使用Preference
和PreferenceManager
中的新方法设置。
-
已知问题
- 可下载字体和表情符号兼容性与 Google Play 服务的集成仅适用于 Google Play 服务 v11+,目前可通过 Google Play 服务测试版计划 获得。
错误修复
-
MediaBrowserCompat.search()
API 不起作用(AOSP 问题 262170) -
ViewCompat.postInvalidateOnAnimation()
抛出异常(AOSP 问题 80146) -
已销毁的 Activity 中的 Fragment 也会调用
onActivityCreated()
-
RecyclerView.isComputingLayout()
应该在预取期间返回 true - 当
Fade
过渡被中断并反转时,View
从头开始动画。(从 Android 框架移植的修复。) -
Transition.Fade
忽略了View
的初始 alpha(AOSP 问题 221820)
修订版本 26.0.0 Alpha 1
(2017 年 3 月)
请注意,26.0.0-alpha1 是一个预发布版本。其 API 表面可能会发生变化,它不一定包含来自最新稳定版本的 Support Library 的功能或错误修复。
重要更改
注意:最小 SDK 版本已提升至 14。因此,许多仅针对 API < 14 兼容性而存在的 API 已被弃用。这些 API 的客户端应迁移到其框架等效项,如每个弃用 API 的参考页面中所述。
- support-percent 模块已弃用。该模块的客户端应迁移到新的 ConstraintLayout 小部件,该小部件作为 SDK Manager 中的单独构件提供。
- support-fragment 模块不再依赖于 support-media-compat 模块。
新 API
添加了许多新类、方法和常量,以提供对 O 预览中添加的平台 API 的向后兼容支持。
IME_FLAG_NO_PERSONALIZED_LEARNING
:IME 可以监听针对具有私有模式(例如浏览器)的应用的“无学习”标志。此功能帮助 IME 了解应用是否处于私有模式,以便在应用处于该模式时禁用其学习或自适应功能。
有关 25.2.0 和 26.0.0-alpha1 之间 API 更改的完整列表,请参阅 支持库 API 差异报告。
错误修复
- 在某些情况下,简单的
AutoTransition
动画可能会被视图“跳跃”中断。(AOSP 问题 221816)
修订版本 25.4.0
(2017 年 6 月)
重要提示:支持库现在可通过 Google 的 Maven 存储库获取。您无需从 SDK 管理器下载支持存储库。有关更多信息,请参阅 支持库设置。
重要更改
-
executePendingTransactions()
、commitNow()
、popBackStackImmediate()
和类似的事务调用在FragmentManager
状态更改期间不允许。事务的重入执行是不安全的,FragmentManager
现在在其状态更改期间强制执行此操作。 - 与此支持库版本同时发布的还有 multidex 版本 1.0.2。此版本包括以下重要更改
- 允许对仪器 APK 进行多 dex 处理。
- 弃用 MultiDexTestRunner(应使用 AndroidJUnitRunner 代替)。
- 提供更好的保护,防止应用出现某些不良的存档提取管理。
- 修复了可能导致临时文件被遗弃的错误。
- 在并发进程中执行时,安装速度更快。
- 修复了 API 19 和 20 上的安装错误。
新增和修改的 API
在 AnimatedVectorDrawableCompat
中支持路径变形和路径插值。路径变形允许形状从一条路径(指定为 android:valueFrom
)更改为另一条路径(指定为 android:valueTo
),以提供复杂而吸引人的视觉效果。路径插值允许将 AnimatedVectorDrawableCompat
的插值器指定为路径(在插值器的 XML 中指定为 android:pathData
)。
API 差异
已修复的问题
- 连接到 MediaBrowserServiceCompat 时出现空指针异常
- MediaBrowserCompat.search() API 不起作用(AOSP 问题 262170)
- BrowseFragment onItemClicked 回调在 25.3.0 中已损坏
- 在 25.3.1 中,在 VerticalGridView 中上下滚动时出现 NullPointerException
- SimpleArrayMap.allocArrays() 中出现 ClassCastException
修订版本 25.3.1
(2017 年 3 月)
已修复的问题
SwitchCompat
要求最小 SDK 版本为 14 或更高。(AOSP 问题 251302)- 基于物理的动画
updateListener
跳过了第一帧。 BottomNavigationView
标签动画已损坏。
修订版本 25.3.0
(2017 年 3 月)
重要更改
Support Library 版本元数据将在从 Gradle 构建时自动添加到 AndroidManifest.xml
中,这简化了在公共构建中跟踪版本的流程。例如
<meta-data android:name="android.support.VERSION" android:value="25.3.0" />
弃用
在此版本中,已弃用了一些方法和类。这些弃用 API 将在将来的版本中删除,开发人员应迁移到其他 API。有关如何迁移到特定 API 的更多信息,请参阅其文档。
ExifInterface
- 布尔方法
getLatLong(float[])
已被弃用。请改用新方法getLatLong()
,它不接受任何参数并返回double[]
。 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 问题 230295)RecyclerView
预取无法正确处理已附加但不在屏幕上的RecyclerView
LinearLayout
未被 Robolectric 识别- 当
Activity
被销毁时,会不正确地为其 Fragment 调用onActivityCreated()
AppCompatImageView
构造函数会导致ArrayIndexOutOfBoundsException
Call.Details
活动过渡中出现糟糕的 UI 性能
修订版本 25.2.0
(2017 年 2 月)
重要更改
已修复的问题
- 此版本修复了 mediarouter 中的一个严重问题,即使用 A2DP 设备和媒体路由 API 可能会导致设备无响应,需要重新启动。
FragmentManager.FragmentLifecycleCallbacks
类现在是静态的。
已修复的问题
- 使用屏幕镜像显示幻灯片演示会导致设备断开 Wi-Fi 连接
- 媒体按钮无法正确处理未向
setMediaButtonReceiver()
注册自己的媒体应用 -
VectorDrawable
出现字符串资源错误(AOSP 问题 232407) TextInputLayout
如果文本由 XML 设置,则会覆盖提示和文本(AOSP 问题 230171)MediaControllerCompat
中存在内存泄漏(AOSP 问题 231441)-
RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback()
崩溃 RecyclerView
在回收视图持有者时崩溃(AOSP 问题 225762)getAllowGeneratedReplies()
错误地为WearableExtender
中的动作返回 false
版本 25.1.1
(2017 年 1 月)
重要:在支持库版本 25.1.1 和 25.1.0 中的 android.support.v7.media.MediaRouter
类中存在已知错误。如果您的应用使用 v7 MediaRouter
,您应更新到 支持库版本 25.2.0,该版本修复了此错误。
重要更改
-
现在可以在事务内部和事务之间优化片段事务。优化片段事务操作可以消除取消的操作。例如,假设执行两个事务,一个添加片段 A,另一个用片段 B 替换片段 A。在这种情况下,第一个操作可能会被取消,并且只添加片段 B。这意味着片段 A 可能不会经历创建/销毁生命周期。
此优化的副作用是片段可能具有超出预期顺序的状态变化。例如,假设一个事务添加片段 A,第二个添加片段 B,然后第三个删除片段 A。如果没有优化,片段 B 可以预期在创建时片段 A 也将存在,因为片段 A 将在片段 B 添加后被删除。使用优化后,片段 B 无法确定片段 A 在 B 创建时是否存在,因为片段 A 的创建和销毁可能已被优化删除。
此优化默认情况下处于禁用状态。要启用优化,请调用
FragmentTransaction.setAllowOptimization(true)
。 - 片段现在可以使用
Fragment.postponeEnterTransition()
和Fragment.startPostponedEnterTransition()
将其转换和动画推迟到准备就绪。此 API 与Activity.postponeEnterTransition()
和Activity.startPostponedEnterTransition()
在 Activity 转换中使用类似。
已修复的问题
-
MediaSessionCompatTest
使用IllegalArgumentException
失败 -
DetailsFragment.installTitleView()
在 25.1.0 中未被调用 - 片段事务在退出时保留了幽灵视图(AOSP 问题 230679)
-
BottomNavigationView
需要在项目图标和文本之间留出空间(AOSP 问题 230653) - 新的
PlaybackFragment
和PlaybackSupportFragment
缺少选定监听器 -
TextInputLayout
焦点在模拟器中从支持库版本 25.1.0 未正确更改(AOSP 问题 230461) - 无法替换
BottomNavigationView
的菜单(AOSP 问题 230343) -
RecyclerView
带有StaggeredGridLayoutManager
在使用全跨度项目时崩溃(AOSP 问题 230295) - 在使用
setCallback(null)
时,MediaSessionCompat
中发生崩溃 -
PlaybackGlueHostOld
和PlaybackSupportGlueHostOld
在播放行更改时不会通知回调 -
PlaybackOverlayFragment
示例/test
无法开始播放 -
RecyclerViewFocusRecoveryTest
在 API 15 上失败 - "屏幕截图" 行被聚焦到屏幕顶部
-
RecyclerViewLayoutTest.triggerFocusSearchInOnRecycledCallback()
在 API 15 上崩溃 -
setActions()
在onSubactionClicked()
中已损坏 -
RecyclerView
在回收某些视图持有者时崩溃
版本 25.1.0
(2016 年 12 月)
重要:在支持库版本 25.1.1 和 25.1.0 中的 android.support.v7.media.MediaRouter
类中存在已知错误。如果您的应用使用 v7 MediaRouter
,您应更新到 支持库版本 25.2.0,该版本修复了此错误。
重要更改
- 嵌套
RecyclerView
小部件(例如,水平滚动列表的垂直滚动列表)的客户端可以通过提示内部RecyclerView
小部件的布局管理器在屏幕上滚动之前准备多少个项目来获得显着的性能提升。调用LinearLayoutManager.setInitialPrefetchItemCount(N)
,其中 N 是每个内部项目可见的视图数量。例如,如果您的内部水平列表一次显示至少三个半项目视图,您可以通过调用LinearLayoutManager.setInitialPrefetchItemCount(4)
来提高性能。这样做允许RecyclerView
在外部RecyclerView
滚动时提前创建所有相关视图,这显着减少了滚动期间的卡顿量。 FragmentActivity.setSupportMediaController()
和FragmentActivity.getSupportMediaController()
已被弃用。请使用新的静态MediaControllerCompat.setMediaController()
和MediaControllerCompat.getMediaController()
方法。- 当客户端通过 appcompat 着色指定小部件着色(例如,
appcompat:buttonTint
)时,客户端有责任提供所有必要的状态(例如,“禁用”、“按下”等)。这与在使用框架着色时指定小部件着色方式一致。
新增和修改的 API
- 添加了 ExifInterface 支持库。此库对从 JPEG 和原始格式文件读取 Exif 信息以及在 JPEG 图像文件上设置 Exif 信息的支持进行了解包。
Snackbar
已重构以允许应用显示自定义内容。BaseTransientBottomBar
是新的基类,它公开了通用的滑动和动画行为。- 添加了一个新的 leanback.media 包,其中包含将媒体播放器集成到 Android TV 应用中的辅助类。
- 将
SeekBarPreference
添加到 v7 首选项支持库,其中包含可自定义的布局和属性。 - 将
ArraySet
类添加到 v4 支持库。此类对应于框架ArraySet
类,该类是在 API 级别 23 中引入的。 RecyclerView
RecyclerView 项目预取改进- 嵌套
RecyclerView
预取支持从另一个滚动RecyclerView
中的RecyclerView
预取内容,并提供 API 来控制预取的程度 - 为自定义
LayoutManager
对象添加了 API,以在滚动和轻扫期间实现以启用预取 - 预取的改进,只在帧之间执行尽可能多的创建/绑定工作
- 嵌套
已修复的问题
- 密码可见性切换未能通过无障碍测试。
- Appcompat 在 L 之前版本的设备上不尊重
state_enabled
。 - 向
RecyclerView
添加了焦点恢复机制。这还修复了支持预取片段在使用 DPAD 导航(例如在 Android TV 设备上)时出现焦点错误。 - Leanback:BrowseFragment 在禁用标题和空适配器时崩溃。
- Appcompat:
AlertDialog
太宽。 InputContentInfoCompat
调用requestPermission()
,而它应该调用releasePermission()
。MediaBrowserCompat
崩溃。- CoordinatorLayout 在将可见性设置为
GONE
时测量/布局视图。 - 无法在低于 API 级别 24 的情况下对
AnimatedVectorDrawableCompat
进行着色 - Leanback 库触发了虚假的 lint 错误
- Palette 库在每个 API 级别上都导致测试失败
RecyclerView
在 Leanback 上的测试失败RecyclerView
在回收视图持有者时崩溃(AOSP 问题 225762)Fragment.onDestroy()
未为回退栈中的片段调用CollapsingToolbarLayout
蒙版在折叠时未绘制CoordinatorLayout.offsetChildByInset()
抛出IllegalArgumentException
- 动画
RecyclerView
项目分离内部RecyclerView
,阻止将来的预取 - 已附加的
RecyclerView
项目无法进行嵌套预取 - 嵌套
RecyclerView
项目的预取数据在第一次布局期间被丢弃 RecyclerView
预取如果两个拖动事件到达相同位置,则会失败RecyclerView
应该在 RenderThread 渲染时推测性地布局- 夜间配置的颜色资源转换为 Drawable 后,并不总是正确地从 Resources 缓存中清除
FloatingActionButton
: 以编程方式设置 BackgroundTintList 无法正常工作(AOSP 问题 227428)TextInputLayout
: 错误视图未设置字体(AOSP 问题 227803)TextInputLayout
在 API 23 以下始终回退到浅色错误颜色(AOSP 问题 221992)FloatingActionButton
指针离开时显示为按下状态
完整的公共错误修复列表可以在 AOSP 问题跟踪器 上找到。
弃用
在此版本中,已弃用了一些方法和类。这些弃用 API 将在将来的版本中删除,开发人员应迁移到其他 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
密码切换现在默认情况下处于禁用状态。可以通过passwordToggleEnabled
XML 属性手动启用它。 BottomNavigationView
项现在为单行,以匹配 Material 规范。RecyclerView
在预取期间,如果布局管理器为 null,则会崩溃。BottomNavigationView
现在正确设置了高度。 (AOSP 问题 226182)BottomNavigationView
在以编程方式添加菜单项时崩溃。 (AOSP 问题 225731)- 修复了
TextInputLayout
左侧 + 右侧复合可绘制对象。 (AOSP 问题 225836) RecyclerView
在回收视图持有者时崩溃。 (AOSP 问题 225762)- Leanback:TalkBack 在分屏视图中频繁说出 "null" 一词。
RecyclerView
: Android Studio 中的渲染问题。 (AOSP 问题 225753)BottomNavigationView
在onNavigationItemSelected()
返回 false 后,仍然显示菜单项为选中状态。 (AOSP 问题 225898)- ForwardingListener 抛出
NoSuchMethodError
。 (AOSP 问题 225647) TextInputEditText
在 IME 提取模式下不显示提示。 (AOSP 问题 221880)
完整的公共错误修复列表可以在 AOSP 问题跟踪器 上找到。
版本 25.0.0
(2016 年 10 月)
重要更改
ContextCompat
构造函数已变为受保护的。不应公开实例化此类,但支持库可以扩展它以面向更新的 API 级别。ActivityCompat
构造函数已变为受保护的。不应公开实例化此类,但支持库可以扩展它以面向更新的 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 级别 13 之后引入的android.view.inputmethod.InputConnection
功能的类。 -
android.v7.widget.RecyclerView.DividerItemDecoration
类为项目之间的垂直或水平分隔线提供基本实现。 - 在
android.support.v7.app.NotificationCompat
、DecoratedCustomViewStyle
和DecoratedMediaCustomViewStyle
中新增的装饰样式,镜像在平台 API 24 中添加的类。
已修复的问题
完整的公共错误修复列表可以在 AOSP 问题跟踪器 上找到。
版本 24.2.1
2016 年 9 月
已修复的问题
FloatingActionButton
不能再锚定到CoordinatorLayout
的间接子项。 (AOSP 问题 220250)CollapsingToolbarLayout
内部的图像不能与fitsSystemWindows=true
正确缩放。 (AOSP 问题 220389)CoordinatorLayout
在显示并关闭Snackbar
时,抛出IndexOutOfBoundsException
。 (AOSP 问题 220762)TextInputLayout
无法解析错误文本颜色。 (AOSP 问题 220305)BatchedCallback.onMoved()
调用BatchedCallback.onInserted()
。 (AOSP 问题 220309)TextInputLayout
覆盖右侧复合可绘制对象。 (AOSP 问题 220728)
完整的公共错误修复列表可以在 AOSP 问题跟踪器 上找到。
版本 24.2.0
2016 年 8 月
版本 24.2.0 包含以下更改
注意:版本 24.2.0 移除对 Android 2.2 (API 级别 8) 及更低版本的支持。仅为了服务这些系统版本而存在的类和方法现在被标记为已弃用,不应再使用。这些已弃用的类和方法可能会在将来的版本中被移除。
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
- 移植了 片段 框架。此模块依赖于
support-compat
、support-core-utils
、support-core-ui
和support-media-compat
。
为了向后兼容性,如果您在 Gradle 脚本中列出 support-v4
,则您的 APK 将包含所有这些模块。但是,为了减小 APK 大小,我们建议您只列出您的应用需要的特定模块。
API 更新
- 使用 自定义标签 的客户端可以控制是否应打开 Instant Apps。(请注意,Instant Apps 尚未普遍可用。)要启用或禁用 Instant Apps,请调用
CustomTabsIntent.Builder.setInstantAppsEnabled()
或指定EXTRA_ENABLE_INSTANT_APPS
。默认情况下,自定义标签将在该功能可用时默认启用 Instant Apps。 TextInputLayout
添加了对来自 Material Design 规范的 密码可见性切换 的支持。- 新的
android.support.transition
包将 过渡 框架移植到 API 级别 14 及更高版本。有关更多信息,请参阅android.support.transition
参考。 - 自定义标签支持库 添加了在辅助工具栏中使用
RemoteViews
的支持。现有的setToolbarItem()
方法现在已弃用。 AppCompatResources
添加了从资源 ID 加载<vector>
(在 API 级别 9 及更高版本上)或<animated-vector>
(在 API 级别 11 及更高版本上)的功能,方法是使用新的getDrawable()
方法。CoordinatorLayout
现在支持定义内嵌视图,并指定其他视图应该避开内嵌视图。这允许应用程序复制类似于FloatingActionButton
如何避开Snackbar
的行为模式,但适用于任何任意视图子元素。有关更多信息,请参阅LayoutParams.insetEdge
和LayoutParams.dodgeInsetEdges
参考文档。- 新的
DiffUtil
类可以计算两个集合之间的差异,并且可以分发适合由RecyclerView.Adapter
使用的更新操作列表。 -
RecyclerView.OnFlingListener
已被添加以支持对甩动作出响应的自定义行为。SnapHelper
类提供了一个专门用于捕捉子视图的实现,而LinearSnapHelper
类扩展了此实现以提供类似于ViewPager
的居中对齐捕捉行为。 - Custom Tabs 库现在允许客户端通过调用
CustomTabsIntent.setAlwaysUseBrowserUI()
来请求标准浏览器 UI 而不是自定义选项卡 UI。当浏览器默认使用自定义选项卡 UI 但用户已表示偏好使用标准浏览器 UI 时,此行为很有用。
行为变更
- 如果您使用 appcompat 库的昼夜功能,系统现在会在昼夜模式更改时自动重新创建您的活动(无论是因为一天中的时间,还是因为调用了
AppCompatDelegate.setLocalNightMode()
)。 Snackbar
现在会在状态栏是半透明的情况下绘制在导航栏后面。
MediaRouter 库
蓝牙设备不再被列为媒体路由。现在仅在 Android 系统级别控制将音频路由到蓝牙设备。
弃用
弃用的类和方法将在将来的版本中被删除。您应该尽快迁移到这些 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()
已被弃用,取而代之的是AccessibilityServiceInfoCompat.loadDescription()
,它返回一个正确本地化的描述。 - 您不应该直接实例化
ActivityCompat
类。非静态getReferrer(Activity)
方法将在即将发布的版本中变为静态。 CoordinatorLayout.Behavior.isDirty()
已被弃用,不再由CoordinatorLayout
调用。任何实现以及对该方法的任何调用都应删除。MediaSessionCompat.obtain()
已被弃用,并被更合适命名的fromMediaSession()
方法替换。MediaSessionCompat.QueueItem.obtain()
已被弃用,并被更合适命名的fromQueueItem()
方法替换。- 一些抽象类已被弃用,并被更能反映其框架等效项的接口替换。
AccessibilityStateChangeListenerCompat
已被AccessibilityManagerCompat.AccessibilityStateChangeListener
接口替换。OnCloseListenerCompat
已被SearchViewCompat.OnCloseListener
接口替换。OnQueryTextListenerCompat
已被SearchViewCompat.OnQueryTextListener
接口替换。
CustomTabsSession.setToolbarItem()
已被基于 RemoteViews 的setSecondaryToolbarViews()
替换。
错误修复
以下已知问题已在 24.2.0 版本中修复
- 确保在第一次测量传递之前调用
setRefreshing(true)
时显示SwipeRefreshLayout
指示器(AOSP 问题 77712) - 防止
TabLayout
在更改页面时闪烁(AOSP 问题 180454) - 在 API 级别 11 及更低版本上取消序列化
SavedState
时避免出现ClassNotFoundException
(AOSP 问题 196430)
可以在 AOSP 问题跟踪器 上找到完整的公共错误修复列表。
版本 24.1.1
2016 年 7 月
已修复的问题
- 修复了 24.1.0 版本中影响支持库之间共享的资源 ID 的问题。此问题导致依赖于具有资源的支持库(如设计和 appcompat)的应用程序遇到由资源 ID 不匹配导致的问题。
版本 24.1.0
2016 年 7 月
- 对 v4 支持库 的更改
-
NotificationCompat.Action.WearableExtender
具有新的getHintDisplayActionInline()
和setHintDisplayActionInline()
方法,以与 Android Wear 2.0 预览版 兼容。这些方法允许应用程序指定应在通知内联显示的操作。- 调用
Fragment.setUserVisbileHint()
不会再导致片段在已添加到尚未提交的FragmentTransaction
的提示的情况下变为 **已启动**。这会影响FragmentPagerAdapter
的用户,他们会覆盖setUserVisbileHint()
并假设在调用super.setUserVisibleHint()
之后片段的特定生命周期状态。有关更多信息,请参阅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) 时扩展到旧的 content 高度(AOSP 问题 213660)
- CollapsingToolbarLayout 不会处理具有顶部或底部边距的固定子元素(AOSP 问题 213001)
- Leanback 浏览标题不支持 RTL 对齐(AOSP 问题 213461)
- PagerTabStrip 由于缺少继承的注释而消失(AOSP 问题 213359)
- 使用 Boolean 设置条件标志时,数据绑定会抛出 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 中引用带主题的
- 对 设计支持库 的更改
-
- 对
AppBarLayout
使用StateListAnimator
处理高度的改进
- 对
- 对 v17 Leanback 库 的更改
-
- 添加了
OnboardingFragment
以提供首次运行的欢迎和设置流程
- 添加了
- 对 自定义选项卡 的更改
-
- 添加了对为辅助工具栏提供
RemoteViews
层次结构的支持 - 添加了
CustomTabsClient.connectAndInitialize()
以用于单行预热
- 添加了对为辅助工具栏提供
版本 23.4.0
2016 年 5 月
- 对 v4 支持库 的更改
- 对 v7 appcompat 库 的更改
-
- 添加了
AppCompatDelegate.setCompatVectorFromResourcesEnabled()
方法,以在运行 Android 4.4(API 级别 19)及更低版本的设备上重新启用在DrawableContainer
对象中使用矢量可绘制对象。有关详细信息,请参阅 AppCompat v23.2 - 矢量的时代。 - 修复了 API 23 中
AppCompatDelegate.setDefaultNightMode()
在 API 级别 23 中未加载正确资源的问题。(Issue 206573) - 修复了可能导致
NullPointerException
的问题。(Issue 207638)
- 添加了
- 对 设计支持库 的更改
-
- 修复了在 API 级别 21-22 上
TextInputLayout
在setErrorEnabled(false)
之后不会清除错误色调的问题。(Issue 202829) - 修复了在禁用动画时
FloatingActionButton
不会返回的问题。(Issue 206416) - 修复了
AppBarLayout
与
滚动标志一起使用时的捕捉功能问题。(Issue 207398)scroll
|enterAlways
|enterAlwaysCollapsed
|snap
- 修复了在 API 级别 21-22 上
- 更改内容为矢量可绘制对象库
-
- 修复了在 API 级别 23 上
VectorDrawableCompat
在TextView
中无法正确呈现的问题。(Issue 206227)
- 修复了在 API 级别 23 上
修订版 23.3.0
2016 年 4 月
- 对 v4 支持库 的更改
-
- 添加了
AppLaunchChecker
以帮助跟踪用户过去如何启动您的应用程序。hasStartedFromLauncher()
可让您知道用户是否之前从主屏幕启动过您的应用程序,或者它是否仅通过其他方式启动(例如,查看特定网页 URL)。 - 修复了
MediaBrowserServiceCompat.mConnections
中的内存泄漏。(Issue 205220) - 修复了
ViewPager
翻页时未考虑页面边距的问题。(Issue 203816) Fragment.onRequestPermissionsResult()
现在将传递给子片段。
- 添加了
- 对 v7 appcompat 库 的更改
-
- 修复了
AppCompatSpinner
中可能导致多个弹出窗口出现的问题。(Issue 205052) - 修复了无边框按钮着色的问题。(Issue 202967)
- 修复了
AppCompatDialogFragment
和AlertDialog
之间的兼容性问题。(Issue 204805) - 撤销了对
TintResources
的更改,这些更改导致了内存和配置问题。(Issue 205236)
- 修复了
- 更改内容为 v7 mediarouter 库
-
- 修复了
MediaRouteControllerDialog
音量滑块的行为。(Issue 202299)
- 修复了
- 更改内容为 v7 Preference 库
-
- 修复了
PreferenceFragmentCompat
如果指定了dividerHeight
会崩溃的问题。(Issue 204778)
- 修复了
- 更改内容为 v7 recyclerview 库
-
- 修复了
RecyclerView
如果可见项目范围缩小,则不会调用滚动回调的错误。(Issue 200987) - 修复了
RecyclerView
如果处于线性布局、加权且包含图像,则会冻结的错误。(Issue 203276) - 修复了
OrientationHelper.getStartAfterPadding()
中的崩溃。(Issue 180521) - 修复了使用
android:nestedScrollingEnabled
时的崩溃。(Issue 197932)
- 修复了
- 对 设计支持库 的更改
-
- 修复了隐藏的底部工作表会处理触摸事件的错误。(Issue 203654)
- 修复了
BottomSheetBehavior
在fitsSystemWindows
为 true 时的布局问题。(Issue 203057) - 修复了
Snackbar
的辅助功能问题。(Issue 182145) - 修复了
Snackbar
滑动时的崩溃。(Issue 203924) - 修复了
AppBarLayout
与enterAlways
一起使用时的错误。(Issue 203661) - 修复了
TextInputLayout
不必要地清除EditText
对象的背景颜色过滤器的错误。(Issue 203357)
修订版 23.2.1
2016 年 3 月
- 对 v4 支持库 的更改
-
- 修复了
DrawableCompat.wrap()
和LayerDrawable
在 API 级别 17 到 19 上的异常。(Issue 201817) - 修复了
ViewDragHelper.shouldInterceptTouchEvent()
中的ArrayIndexOutOfBoundsException
。(Issue 182262) - 修复了
ViewPager
中与大小更改的滚动计算相关的错误。 - 修复了在未设置
DrawerLayout.DrawerListener
的情况下调用DrawerLayout.removeDrawerListener()
时的NullPointerException
。(Issue 202478) - 修复了
ViewPager
在滚动时未正确设置AccessibilityEvent
参数的错误。 - 修复了使用
Drawable.wrap()
时在设备旋转期间导致延迟的问题。(Issue 201924)
- 修复了
- 对 v7 appcompat 库 的更改
-
- 撤销了对矢量资源的依赖,以便使用 appcompat 库 的开发人员不必使用
VectorDrawable
及其关联的构建标志。 - 修复了夜间模式与 API 级别 23 的兼容性问题。(Issue 201910)
- 修复了
SwitchCompat
与 API 级别 7 的兼容性问题。(Issue 201942) - 修复了在资源对象中传播配置值的问题。 Issue 201928
- 修复了兼容性问题,其中
android.support.v7.app.NotificationCompat.MediaStyle
取消按钮在 API 级别 21 及更低版本上变为不可见。(Issue 202156) - 修复了
AppCompatSpinner
在 API 级别 21 及更低版本上发生的兼容性崩溃。(Issue 202246) - 修复了
app:textAllCaps = "false"
样式无法正常工作的问题。(Issue 202117) - 修复了还原
SearchView
时的崩溃。(Issue 201836) - 修复了使用 AppCompat 对可绘制资源进行着色时发生的内存泄漏。(Issue 202379)
- 修复了 API 级别 11 及更低版本上
KeyEvent
的问题。(Issue 202939)
- 撤销了对矢量资源的依赖,以便使用 appcompat 库 的开发人员不必使用
- 更改内容为 v7 cardview 库
-
- 为
CardView
添加了夜间模式支持。(Issue 194497)
- 为
- 更改内容为 v7 recyclerview 库
-
- 修复了与各种 measure-spec 方法相关的错误。(Issue 201856)
- 减少了
RecyclerView
在计算布局或滚动时不允许适配器更改的锁定时间。(Issue 202046) - 修复了在超出视图的项目上调用
notifyItemChanged()
时的崩溃。(Issue 202136) - 修复了当
RecyclerView.LayoutManager
在同一个测量过程中添加和删除视图时发生的崩溃。(Issue 193958)
- 更改内容为 v7 mediarouter 库
-
- 修复了在 API 级别 17 上调用
MediaRouter.getInstance()
时发生的崩溃。(Issue 180654)
- 修复了在 API 级别 17 上调用
- 更改内容为 v17 Leanback 库
-
- 修复了
GridLayout.onAddFocusables()
导致选择错误项目的问题。 - 修复了在操作折叠后
GuidedStepFragment
操作消失的问题。
- 修复了
- 对 设计支持库 的更改
-
- 修复了由标签池引起的
TabLayout
崩溃。(Issue 201827) - 修复了
NavigationView
中导致选择错误颜色的错误。(Issue 201951) - 修复了
setBackgroundTintList()
无法再更改背景颜色的错误。(Issue 201873) - 修复了当
AppBarLayout
与android:fitsSystemWindows = “true”
一起使用时,AppBarLayout
无法完全滚动到视图之外的问题。(Issue 201822) - 修复了
BottomSheetDialog
无法正确显示简短内容视图的问题。(Issue 201793) - 修复了
BottomSheetDialogFragment
在内部内容更改时会随机移动的问题。(Issue 202125) - 修复了 TextInputLayout 计数器中的崩溃问题 link
- 修复了在
TextInputLayout.getCounterMaxLength()
恢复保存状态时发生的崩溃问题。(Issue 202375) - 修复了在使用不是
CoordinatorLayout
的视图的保存状态恢复CoordinatorLayout
时发生的ClassCastException
问题。
- 修复了由标签池引起的
- VectorDrawableCompat 的更改
-
- 修复了为
android:tintMode
读取错误变量的错误。(Issue 201907)
- 修复了为
修订版本 23.2.0
2016 年 2 月
- 有关 v4 支持库 的更改
-
- 为
MediaBrowser
支持添加了MediaBrowserCompat
,以及为MediaBrowserService
支持添加了MediaBrowserServiceCompat
。这在将媒体应用程序的后台服务与 UI 组件连接以及与 Android Auto 和 Android Wear 集成时非常有用,而无需要求 API 级别 21 或更高版本。 - 现在,系统将为嵌套的
FragmentActivity
调用onActivityResult()
。
- 为
- 有关 v7 AppCompat 库 的更改
-
- 将夜间模式功能添加到 API 级别 14 及更高版本。根据一天中的时间或特定于应用程序的设置,在 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 库 的更改
-
MediaRouteControllerDialog
现在可以正确应用自定义应用程序主题颜色。
- 有关 设计支持库 的更改
-
- 添加了对 底部工作表 的支持。交互插件
BottomSheetBehavior
允许CoordinatorLayout
的子视图充当底部工作表。基类BottomSheetCallback
提供回调来监控底部工作表事件。
- 添加了对 底部工作表 的支持。交互插件
- 有关 CustomTabs 支持库 的更改
-
- Chrome 自定义选项卡 现在允许应用程序在现有顶部操作按钮之外,还包括带有操作按钮的底部栏。
CustomTabsIntent.Builder.addToolBarItem()
:将操作按钮添加到自定义选项卡。您可以使用此方法添加多个按钮。CustomTabsSession.setToolBarItem()
:更新工具栏项目的视觉效果。此方法仅在提供有效 ID 并且浏览器会话处于前台时才能成功。
- 添加了 VectorDrawable 支持库
-
- 添加了类
-
VectorDrawableCompat
AnimatedVectorDrawableCompat
- 为在 API 级别 7 或更高版本上运行的应用程序添加了对
VectorDrawable
资源的支持。在 API 级别 11 或更高版本上也支持AnimatedVectorDrawable
资源。矢量资源可能比图像资源小得多,并且应通过减少支持多个设备屏幕所需的资源数量来帮助减小应用程序大小。 - 此库现在是 v7 AppCompat 库 的依赖项,使开发人员和 AppCompat 可以轻松使用矢量图形。要在
ImageButton
或ImageView
中使用VectorDrawableCompat
,请使用app:srcCompat
XML 属性或setImageResource()
方法。 - 要继续在 API 级别 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 库 的更改
-
- 为
GuidedStepFragment
添加了新功能,它是一个引导用户完成决策或一系列决策的组件 -
- 为
GuidedAction
添加了按钮操作 GuidedStepFragment.setButtonActions()
:设置用户可以从操作视图中选择的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 库 的更改
-
RecyclerView
现在具有一个名为“自动测量”的可选功能,该功能允许RecyclerView.LayoutManager
轻松包装内容或处理RecyclerView
父级提供的各种测量规格。它支持RecyclerView
的所有现有动画功能。-
- 如果您有自定义的
RecyclerView.LayoutManager
,请调用setAutoMeasureEnabled(true)
以开始使用新的自动测量 API。所有内置的RecyclerView.LayoutManager
对象默认情况下都启用了自动测量。 RecyclerView.LayoutManager
不再忽略一些RecyclerView.LayoutParams
设置,例如滚动方向上的MATCH_PARENT
。**注意:**这些解除的限制可能会导致布局中的意外行为。确保您指定了正确的布局参数。
- 如果您有自定义的
- 当使用有效载荷信息更新
RecyclerView.ViewHolder
时,DefaultItemAnimator
现在将禁用更改动画。 - 您现在可以修改
ItemTouchHelper
的逃逸速度以控制滑动灵敏度。要使其更容易或更难滑动,请覆盖getSwipeEscapeVelocity(float defaultValue)
并修改defaultValue
。
修订版本 23.1.1
2015 年 11 月
- 有关 v7 recyclerview 库 的更改:
-
- 修复了在执行
ItemTouchHelper
实用程序类提供的滑动以隐藏操作,然后添加项目时发生的崩溃问题。(Issue 190500)
- 修复了在执行
- 有关 v7 preference 库 的更改:
-
- 修复了 ProGuard 使用问题。(Issue 183261)
- 有关 v17 Leanback 支持库 的更改:
-
- 修复了此库中的多个内部问题。
- 有关 设计支持库 的更改:
-
- 将
getHeaderView
方法添加到NavigationView
类中。 - 修复了在运行 Android 4.0(API 级别 15)及更低版本的设备上,
FloatingActionButton
对象的透明背景问题。(Issue 183315)
- 将
修订版本 23.1.0
2015 年 10 月
- 有关 v4 支持库 的更改:
-
- 为
NestedScrollView
小部件添加了OnScrollChangedListener
接口支持。它允许您在滚动 X 或 Y 位置更改时接收回调。 - 添加了一个
MediaButtonReceiver
类,用于将接收到的播放控件转发到管理MediaSessionCompat
类的服务。MediaSessionCompat
类具有一个构造函数,可以自动在清单中找到媒体按钮接收器。媒体按钮接收器是 处理来自硬件或蓝牙控件的播放控件 的关键部分。
- 为
- 有关 v7 appcompat 库 的更改:
-
- 添加了材质设计
Seekbar
和ImageButton
小部件。 - 更新了
ImageView
小部件以支持色调功能。 - 更新了
SwitchCompat
小部件的外观。
- 添加了材质设计
- 有关 v7 mediarouter 库 的更改:
-
- 在
MediaRouteChooserDialog
类中添加了以下功能 - 在发现媒体路由提供者时显示加载页面。
- 包含设备类型图标,以便更轻松地识别设备。
- 根据当前应用程序中使用的频率对路由进行排序。
- 支持横向模式。
- 在
MediaRouteControllerDialog
类中添加了以下功能 - 识别屏幕投射并提供适当的描述。
- 支持各种专辑封面大小和纵横比,并异步加载封面。
- 根据应用程序的主色自动选择内容颜色。
- 根据设备上可用的屏幕空间调整对话框布局。
- 支持横向模式。
- 在
- 针对 v7 调色板库 的更改:
-
- 添加了
setRegion()
方法,以支持从Bitmap
对象的特定区域提取颜色。
- 添加了
- 有关 v7 recyclerview 库 的更改:
-
- 在
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 偏好设置支持库的更改
-
- 删除了用于控制
EditText
对话框的 API。
- 删除了用于控制
- 有关 v17 Leanback 支持库 的更改:
-
- 为支持库添加了
GuidedStepFragment
类的版本(扩展android.support.v4.app.Fragment
),并改进了动画和过渡。 - 更新了
GuidedStepFragment
类,以便可以将其放置在现有内容之上。 - 添加了对
SearchFragment
类中不同类型的搜索完成进行批注的能力。 - 为
VerticalGridFragment
类添加了交错滑动过渡支持。
- 为支持库添加了
- 有关 设计支持库 的更改:
-
- 为
TextInputLayout
小部件添加了 字符计数 支持。 - 通过添加
SCROLL_FLAG_SNAP
常量,为AppBarLayout
类添加了边缘捕捉支持。当滚动结束时,如果视图仅部分可见,则视图会捕捉并滚动到其最近的边缘。 - 通过使用
app:actionLayout
属性或MenuItemCompat.setActionView()
方法,为NavigationView
类添加了对自定义视图的支持。
- 为
- 针对 自定义标签支持库 的更改:
-
- 为
CustomTabsIntent
类添加了enableUrlBarHiding()
方法。它允许客户端自定义 URL 栏是否应该在向下滚动时自动隐藏。 - 为
CustomTabsSession
类添加了setActionButton()
方法。它允许客户端更改已启动的自定义标签中自定义操作按钮的图标。 - 将
TAB_SHOWN
和TAB_HIDDEN
常量添加为CustomTabsCallback
类的onNavigationEvent
方法的新事件。
- 为
修订版 23.0.1
2015 年 9 月
- 针对 v7 和 v14 偏好设置支持库的更改
-
- 添加了材质设计布局和样式文件。(问题 183376)
- 有关 v7 appcompat 库 的更改:
- 有关 设计支持库 的更改:
-
- 修复了
AppBarLayout
类,使其现在在旋转后能正确绘制。(问题 183109) - 修复了
TabLayout
类,使其现在在用户在滑动后点击时能正常工作。(问题 183123)
- 修复了
- 针对 自定义标签支持库 的更改:
-
- 为版本支持将
minSdkVersion
值从 16 降低到 15。 - 添加了一种从意图生成
CustomTabsSessionToken
的方法。
- 为版本支持将
修订版 23
2015 年 8 月
有关支持库更改的完整列表,请参阅 支持库 API 差异报告。
修订版 22.2.1
2015 年 7 月
- 有关 设计支持库 的更改:
-
- 为
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 月
- 添加了 设计支持库:
-
- 添加了
TextInputLayout
,用于将EditText
提示和错误文本显示为浮动标签。 - 添加了
FloatingActionButton
,用于将界面上的主要操作实现为浮动操作按钮,支持默认大小或迷你大小。 - 添加了
Snackbar
,用于在动画 SnackBar 中提供轻量级反馈,并可以选择执行操作。 - 添加了
TabLayout
,用于实现固定和可滚动的 标签,以及与ViewPager
的轻松集成。 - 添加了
NavigationView
,用于实现 导航抽屉 内容,包括通过 菜单资源 填充菜单项的功能。 - 添加了
CoordinatorLayout
,一个通用布局,用于构建同级视图之间的依赖关系,并允许通过CoordinatorLayout.Behavior
在组件之间轻松进行滚动反应。设计库中的许多组件都依赖于作为CoordinatorLayout
的子项。 - 添加了
AppBarLayout
,一个用于Toolbar
和其他视图(如TabLayout
)的容器,用于通过滚动出屏幕、在向下滚动时变得可见或在滚动出/进入屏幕之前折叠/展开来响应滚动事件。 - 添加了
CollapsingToolbarLayout
,用于控制Toolbar
的折叠方式。工具栏可以通过以下方式折叠:在工具栏折叠时将组件固定到屏幕顶部,引入ImageView
等组件的视差滚动,或在视图部分折叠时添加内容遮罩颜色。
- 添加了
- 针对 v4 支持库 的更改:
-
- 为
getContentChangeTypes()
和setContentChangeTypes()
方法以及相关的更改类型字段添加了AccessibilityEventCompat
类,用于处理辅助功能事件。 - 为
getActiveQueueItemId()
、getCustomActions()
和getExtras()
方法以及相关的状态字段添加了PlaybackStateCompat
类,用于从队列中获取自定义操作。 - 为
addCustomAction()
、setActiveQueueItemId()
和setExtras()
方法添加了PlaybackStateCompat.Builder
类,用于将自定义操作添加到播放状态。 - 为
fromCustomAction()
和getCustomAction()
方法添加了PlaybackStateCompat.CustomAction
类,用于从队列中获取自定义操作。 - 为
ViewCompat
类添加了isAttachedToWindow()
、offsetLeftAndRight()
和offsetTopAndBottom()
方法,用于处理视图。 - 为
ViewPager
类添加了addOnPageChangeListener()
、clearOnPageChangeListeners()
和removeOnPageChangeListener()
方法,用于响应页面更改。已弃用
ViewPager.setOnPageChangeListener()
方法。 - 为
ViewParentCompat
类添加了notifySubtreeAccessibilityStateChanged()
方法,用于通知视图父级其后代之一的可访问性状态已更改。 - 为
ViewPropertyAnimatorCompat
类添加了translationZ()
、translationZBy()
、z()
和zBy()
方法,用于添加动画。
- 为
- 有关 v7 appcompat 库 的更改
-
- 为
AppCompatActivity
、AppCompatCallback
和AppCompatDialog
类添加了onWindowStartingSupportActionMode()
方法,用于处理从当前窗口启动的操作模式。 - 为
AppCompatDelegate
类添加了isHandleNativeActionModesEnabled()
和setHandleNativeActionModesEnabled()
方法,用于处理本机操作模式。
- 为
有关支持库更改的完整列表,请参阅 支持库 API 差异报告。
修订版 22.1.0
2015 年 4 月
- 有关 注释库 的更改:
-
- 添加了注释库,以提供对增强代码检查的支持。注释作为元数据标签添加,您可以将其附加到变量、参数和返回值,以检查方法返回值、传递的参数以及局部变量和字段。
- 针对 v4 支持库 的更改:
-
- 添加了
ColorUtils
类,以提供一组与颜色相关的实用程序方法。 - 为
DrawableCompat
类添加了unwrap()
和wrap()
方法,使您能够在所有 API 级别 4 或更高版本的设备上使用setTint()
、setTintList()
和setTintMode()
。 - 添加了
TraceCompat
类,以将跟踪事件写入系统跟踪缓冲区,然后可以使用 Systrace 工具收集和可视化这些事件。 - 添加了
CircularIntArray
类,以创建循环整数数组数据结构。 - 为
CircularArray
类添加了clear()
、removeFromStart()
和removeFromEnd()
方法。此外,还将此类中的现有方法更改为非最终方法。 - 添加了
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 库 的更改
-
- 为 appcompat 小部件添加了色调支持,包括
AppCompatAutoCompleteTextView
、AppCompatButton
、AppCompatCheckBox
、AppCompatCheckedTextView
、AppCompatEditText
、AppCompatMultiAutoCompleteTextView
、AppCompatRadioButton
、AppCompatRatingBar
、AppCompatSpinner
和AppCompatTextView
。 - 更新了
AppCompatActivity
,作为使用支持库操作栏功能的活动的基类。此类取代了已弃用的ActionBarActivity
。 - 添加了
AppCompatCallback
接口,供 AppCompat 实现以能够执行回调。 - 添加了
AppCompatDelegate
抽象类,作为您可以用来将 AppCompat 的支持扩展到任何活动的委托。 - 添加了
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
。您现在可以使用android:theme
为所有 API 级别 7 或更高版本的设备上的工具栏以及android:theme
支持所有 API 级别 11 或更高版本的设备上的所有小部件。
- 为 appcompat 小部件添加了色调支持,包括
- 有关 v17 leanback 库 的更改
-
- 添加了
GuidedStepFragment
、GuidanceStylist
和GuidedActionsStylist
以支持创建多步骤决策流程。
- 添加了
- 有关 v7 recyclerview 库 的更改
-
- 添加了
SortedList
类,以按列表顺序显示项目并提供列表更改的通知。 - 添加了
SortedListAdapterCallback
类,该类可以将排序列表绑定到RecyclerView.Adapter
类。
- 添加了
- 针对 v8 渲染脚本库 的更改
-
- 添加了
ScriptIntrinsicHistogram
类,用于用作直方图过滤器。 - 添加了
ScriptIntrinsicResize
类,用于执行二维分配的调整大小。
- 添加了
- 针对 v4 支持库 的更改:
-
- 更新了
getDrawable()
方法,以返回指定特定资源 ID、屏幕密度和主题的可绘制对象。 - 添加了
setImportantForAccessibility()
方法,以便您可以指示视图是否应触发辅助功能事件。 - 添加了
getStatusBarBackgroundDrawable()
方法,以便您可以获取状态栏背景可绘制对象。 - 在
NotificationCompat.CarExtender.UnreadConversation
类中添加了方法,以便 Android Auto 消息传递应用程序可以检索其他通知数据。 - 添加了
getProgressCircleDiameter()
方法以返回圆形布局的直径。 - 将默认的
DrawerLayout
状态栏颜色更改为colorPrimaryDark
。
- 更新了
- 有关 v7 appcompat 库 的更改
- 有关 v17 leanback 库 的更改
-
- 添加了
getRecycledPoolSize()
和setRecycledPoolSize()
方法以允许自定义回收池大小。 - 将
WRAP_CONTENT
属性添加到布局宽度设置中以支持标题图标的包裹内容。 - 在 XML 中定义了
R.transition
以改进过渡更新。 - 启用了对从右到左布局的支持。
- 在
PlaybackOverlayFragment
类中添加了对播放和暂停媒体按键事件的支持。 - 在
BrowseFragment
类和DetailsFragment
类中添加了进入和返回过渡。 - 添加了
replace()
方法以替换对象适配器数组中的项目。
- 添加了
- 有关 v7 mediarouter 库 的更改
-
- 更新了 Google Cast 图标以使用 材料设计 样式。
- 更新了
MediaRouter
对话框中使用的所有图标以使用 材料设计 样式。
- 有关 v7 recyclerview 库 的更改
-
- 在
RecyclerView
类中添加了getlayoutPosition()
和getadapterPosition()
方法。 - 弃用了
classgetChildPosition()
和findViewHolderForPosition()
方法,它们位于RecyclerView
类中。 - 弃用了
getPosition()
方法,它位于RecyclerView.ViewHolder
类中。 - 弃用了
getViewPosition()
方法,它位于RecyclerView.LayoutParams
类中。
- 在
- 针对 v4 支持库 的更改:
- 针对 v4 支持库 的更改:
-
- 添加了
NotificationCompat.CarExtender
类以支持 Android Auto 对通知的扩展。
- 添加了
- 有关 v7 appcompat 库 的更改
-
- 添加了
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 支持库 以支持多个 Dalvik 可执行 (DEX) 文件,以便在 Android 5.0 之前支持多 dex 文件。
- 针对 v4 支持库 的更改:
-
- 添加了对运行 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 库 的更改
-
- 添加了对 材料设计 用户界面的支持。
- 添加了
Toolbar
,它将ActionBar
的功能推广到应用布局中使用。 - 更新了
ActionBarDrawerToggle
,其中包含菜单到箭头动画。 - 更新了常见用户界面小部件以允许在运行于 Android 5.0 之前的设备上通过主题属性进行着色。
- 添加了
SwitchCompat
,这是在 Android 4.0(API 级别 14)中添加的Switch
小部件的移植版本。
- 新的 v7 cardview 库
-
- 添加了
CardView
小部件,它提供了用于显示数据项的与材料设计兼容的实现。
- 添加了
- 新的 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 虚拟化层添加了错误传播。
- 针对 v4 支持库的更改
-
- 添加了对外部存储 API 的支持,包括
getObbDirs()
、getExternalFilesDirs()
、getExternalCacheDirs()
和getStorageState()
。在运行 Android 4.3(API 级别 18)及更早版本的设备上,这些辅助方法始终返回单个文件对象。在运行 Android 4.4(API 级别 19)及更高版本的设备上,这些方法可能会返回多个文件对象。 - 添加了
PrintHelper
类,该类与打印 API 协同工作,使用最少的代码即可打印图像。 - 添加了对弹出式菜单的拖动打开用户界面支持。有关更多信息,请参阅
PopupMenuCompat
和ListPopupWindowCompat
。 - 改进了辅助功能支持,增加了
findFocus()
方法(位于AccessibilityNodeProviderCompat
中)以及getLiveRegion()
方法(位于AccessibilityNodeInfoCompat
中)。 - 添加了辅助类
ScaleGestureDetectorCompat
,用于访问新的缩放手势方法。 - 修复了
ActionBarDrawerToggle
在从右到左的语言显示中的问题。 - 修改了
AutoScrollHelper
选项,使其可以消耗触摸事件或允许将触摸事件传递给其他视图。
- 添加了对外部存储 API 的支持,包括
- 针对 v7 mediarouter 库的更改
-
- 添加了对媒体播放排队、设置 HTTP 标头值和媒体播放时长支持。
- 添加了显式启动、获取和结束会话操作,以便使用媒体路由显式管理媒体播放会话。
- 针对 v4 支持库的更改
-
- 用户界面
- 添加了
BidiFormatter
,用于处理结合从右到左和从左到右格式化的文本的文本字符串。 - 修改了
ViewPager
,使其能够更好地处理在初始布局处理中分页器具有零测量宽度的情况。 - 修改了
DrawerLayout
和SlidingPaneLayout
,使其在项目代码正在编辑时不会引发测量异常。
- 添加了
- 辅助功能
- 添加了
ExploreByTouchHelper
,以简化对自定义视图的辅助功能实现。 - 修复了
ViewPager
错误填充TYPE_VIEW_SCROLLED
辅助功能事件的问题。 - 修复了
ViewPager
在填充辅助功能事件时发生的空指针异常。 - 简化了
AccessibilityNodeInfoCompat
,将CharSequence
输入更改为String
对象。 - 弃用了一个
AccessibilityRecordCompat
构造函数,该构造函数使用Object
作为输入。
- 添加了
- 媒体
- 添加了
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 在 Support Library 的后续修订版中可能会发生更改。目前,建议仅将该库与 Google Cast 开发者预览 结合使用。
- 针对 v4 支持库的更改
-
- 添加了
DrawerLayout
,用于创建可以从窗口边缘拉入的 导航抽屉。 - 添加了
SlidingPaneLayout
小部件,用于创建链接的摘要和详细信息视图,这些视图可以适当地适应各种屏幕尺寸。 - 添加了
ActionBarDrawerToggle
,作为将DrawerLayout
和ActionBar
的功能联系在一起的一种方式。 - 添加了
ViewDragHelper
作为在父视图中拖动视图的新通用组件。 - 添加了
ScrollerCompat
,以提供Scroller
和OverScroller
兼容性支持。 - 添加了
FileProvider
,允许在应用程序之间共享私有文件。 - 更新了
ViewPager
,如果关联的PagerAdapter
类在不调用notifyDataSetChanged()
的情况下被修改,则会引发异常。 - 修复了
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 支持库的更改
-
- 添加了对 Android 4.1(API 级别 16)中引入的通知功能的支持,并在
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
,使其可以从服务中使用。 - 添加了对
EXTRA_HTML_TEXT
的支持,以ShareCompat
。 - 更新了
NotificationCompat.Builder
以支持setNumber()
方法。 - 在
ConnectivityManagerCompat
中添加了对isActiveNetworkMetered()
方法的支持。
- 更新了
- 用户界面支持
- 针对 v4 支持库的更改
-
- 修复了
PendingIntent
对象的意图标志,这些对象是由TaskStackBuilder
生成的。 - 从 gridlayout 库项目中删除了未使用的属性,以确保库可以使用 API 级别 7 及更高版本构建。
- 为 gridlayout 库项目添加了
.classpath
和.project
文件。
- 修复了
- 针对 v4 支持库的更改
-
- 添加了
ShareCompat
,它提供了用于发送和接收社交共享应用程序内容的辅助类,包括用于将共享数据归因于源应用程序的新元数据。此类还提供了与 Android 4.0 中的新ShareActionProvider
的兼容集成。 - 添加了
NavUtils
和TaskStackBuilder
以支持实现导航的 Android 设计 指南。这些补充包括一种跨版本实现操作栏的“向上”按钮的方法。有关此模式的示例实现,请参阅 (<em><sdk></em>/samples/<em><platform></em>/AppNavigation
) 中的 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(仅在支持库中可用),允许您创建具有水平分页的 UI,允许用户在内容视图之间左右滑动。支持此功能的类包括
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 库一起发布的初始版本。