添加自定义页面指示器

借助页面指示器,您可以帮助用户了解自己在应用内容中的当前位置,以直观的方式显示进度。当您按顺序呈现内容(例如轮播界面、图片库和幻灯片,或列表中的分页)时,这些导航提示会很有用。

版本兼容性

此实现要求将项目 minSDK 设置为 API 级别 21 或更高级别。

依赖项

创建带有自定义页面指示器的横向页面浏览器

以下代码会创建一个带有页面指示器的水平页面浏览器,以便向用户提供有关有多少页面以及当前可见的页面的直观提示:

val pagerState = rememberPagerState(pageCount = {
    4
})
HorizontalPager(
    state = pagerState,
    modifier = Modifier.fillMaxSize()
) { page ->
    // Our page content
    Text(
        text = "Page: $page",
    )
}
Row(
    Modifier
        .wrapContentHeight()
        .fillMaxWidth()
        .align(Alignment.BottomCenter)
        .padding(bottom = 8.dp),
    horizontalArrangement = Arrangement.Center
) {
    repeat(pagerState.pageCount) { iteration ->
        val color = if (pagerState.currentPage == iteration) Color.DarkGray else Color.LightGray
        Box(
            modifier = Modifier
                .padding(2.dp)
                .clip(CircleShape)
                .background(color)
                .size(16.dp)
        )
    }
}

代码要点

  • 该代码实现了 HorizontalPager,可让您在不同内容页面之间水平滑动。在本例中,每个页面都会显示页码。
  • rememberPagerState() 函数会初始化分页器并将页面数量设置为 4。此函数会创建一个用于跟踪当前页面的状态对象,并让您控制分页器。
  • pagerState.currentPage 属性用于确定应突出显示哪个页面指示器。
  • 页面指示器显示在由 Row 实现叠加的页面浏览器中。
  • 系统会为分页器中的每个页面绘制一个 16 dp 的圆圈。当前页面的指示器显示为 DarkGray,其余指示器圆圈显示为 LightGray
  • HorizontalPager 中的 Text 可组合项会在每个页面上显示“Page: [page number]”(页码:[页码])文本。

结果

图 1. 在内容下方显示圆形指示器的页面浏览器。

包含本指南的集合

本指南属于以下精选快速入门集合,这些集合涵盖了更广泛的 Android 开发目标:

借助列表和网格,您的应用可以以视觉上令人愉悦且易于用户使用的形式显示集合。
了解如何使用可组合函数根据 Material Design 设计系统轻松创建美观的界面组件。

有问题或反馈

请访问我们的常见问题解答页面,了解简短指南,或与我们联系,告诉我们您的想法。