ViewPager
ViewPager 是一个布局管理器,可用于实现手势导航。 通过手势导航,用户可以向左和向右轻扫浏览数据页。 本指南介绍如何使用带或不带片段的 ViewPager 实现手势导航。 还介绍了如何使用 PagerTitleStrip 和 PagerTabStrip 添加页面指示器。
概述
应用开发中的一个常见场景是需要为用户提供同级视图之间的手势导航。 在此方法中,用户向左或向右轻扫以访问内容页面(例如,在安装向导或幻灯片放映中)。 可以使用 Android 支持库 v4 中提供的 ViewPager
小组件创建这些轻扫视图。
ViewPager
是一个由多个子视图组成的布局小组件,其中每个子视图构成布局中的一个页面:
通常,ViewPager
与片段结合使用;但在某些情况下,可能希望使用 ViewPager
而不增加 Fragment
的复杂性。
ViewPager
使用适配器模式提供要显示的视图。 此处使用的适配器在概念上与 RecyclerView 使用的适配器类似 - 由你提供 PagerAdapter
的一个实现来生成 ViewPager
向用户显示的页面。 ViewPager
显示的页面可以是 View
或 Fragment
。 当显示 View
时,适配器会对 Android 的 PagerAdapter
基类进行子类化。 如果显示 Fragment
,则适配器对 Android 的 FragmentPagerAdapter
进行子类化。 Android 支持库还包含 FragmentPagerAdapter
(PagerAdapter
的子类),以帮助处理将 Fragment
连接到数据的细节。
本指南演示了这两种方法:
在带视图的 ViewPager 中,开发了一个
TreePager
应用来演示如何使用ViewPager
显示树木目录(落叶树和常绿树的图片库)的视图。PagerTabStrip
和PagerTitleStrip
用于显示有助于页面导航的标题。在带片段的 ViewPager 中,开发了一个稍显复杂的 FlashCardPager 应用,用于演示如何使用带
Fragment
的ViewPager
来生成应用,以闪存卡的形式呈现数学问题并响应用户输入。
要求
要在应用项目中使用 ViewPager
,必须安装 Android 支持库 v4 包。 有关安装 NuGet 包的详细信息,请参阅演练:在项目中包括 NuGet。
体系结构
以下三个组件对于通过 ViewPager
实现手势导航很有用:
- ViewPager
- 适配器
- 寻呼指示器
下面概述了其中每个组件。
ViewPager
ViewPager
是一个布局管理器,它一次显示一个 View
的集合。 它的任务是检测用户的轻扫手势并根据需要导航到下一个或上一个视图。 例如,下面的屏幕截图演示了 ViewPager
根据用户手势从一张图像转换到下一张图像:
适配器
ViewPager
从适配器中拉取其数据。 适配器的任务是创建由 ViewPager
显示的 View
,并根据需要提供它们。 下图演示了此概念 - 适配器创建并填充 View
并将它们提供给 ViewPager
。 当 ViewPager
检测到用户的轻扫手势时,它会要求适配器提供要显示的相应 View
:
在此特定示例中,每个 View
均由树木图像和树木名称构造而成,然后再传递到 ViewPager
。
寻呼指示器
ViewPager
可用于显示大型数据集(例如,图像库可能包含数百张图像)。 为了帮助用户浏览大型数据集,ViewPager
通常会附带一个显示字符串的寻呼指示器。 该字符串可能是图像标题、描述文字或只是当前视图在数据集中的位置。
有两个视图可以生成此导航信息:PagerTabStrip
和 PagerTitleStrip.
每个视图都在 ViewPager
顶部显示一个字符串,并且都从 ViewPager
的适配器中拉取其数据,以便它始终与当前显示的 View
保持同步。 它们之间的区别在于,PagerTabStrip
包含“当前”字符串的视觉指示符,而 PagerTitleStrip
则不包含(如这些屏幕截图所示):
本指南演示如何实现 ViewPager
、适配器和指示器应用组件,并将其集成以支持手势导航。