【问题标题】:How to use Pager Layout in Jetpack Compose?如何在 Jetpack Compose 中使用分页器布局?
【发布时间】:2021-09-19 20:13:28
【问题描述】:

我想在 Horizo​​ntalPager 的不同页面上有不同的图像。如何做到这一点

val pagerState = rememberPagerState(pageCount = 3)
HorizontalPager(
    state = pagerState,
    modifier = Modifier.fillMaxWidth()
  ) {
     Image(painter = painterResource(image1), contentDescription = null)
    }

【问题讨论】:

    标签: android-jetpack-compose


    【解决方案1】:

    每个页面调用HorizontalPagercontent,可以通过lambda参数获取页面索引:

    val pagerState = rememberPagerState(pageCount = 3)
    HorizontalPager(
        state = pagerState,
        modifier = Modifier.fillMaxWidth()
    ) { page ->
        Image(
            painter = painterResource(
                when(page) {
                    0 -> R.drawable.my_image1
                    1 -> R.drawable.my_image2
                    2 -> R.drawable.my_image3
                    else -> throw IllegalStateException("image not provided for page $page")
                }
            ), contentDescription = null
        )
    }
    

    【讨论】:

    • 我在我的应用程序中添加了 Horizo​​ntalPager,但它不能向左或向右滑动,因为我在协程中添加了 pagerstate,每当我增加 pagercount 时它的 scope.launch {page = pagerstate.currentpage} 就会起作用很好,但在向左/向右滑动时,它需要到第一页
    • @RahulMatte 请用minimal reproducible example 创建一个问题,这个描述很难帮助你
    • 好的,我会这样做并标记你。 Horizo​​ntalPager 是实验性 api,我正在考虑是否可以将其包含在我的生产应用程序中?因为它会在未来被移除
    • @RahulMatte 实验状态意味着 API 将来可以稍微改变,也可能从伴奏库移动到主要的 Compose 部分,但不会被删除。我相信它是完全安全的,只是在依赖项更新后可能需要一些代码更新。
    猜你喜欢
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-06
    • 1970-01-01
    相关资源
    最近更新 更多