首页 > 解决方案 > 有没有办法在 android Jetpack Compose 中自定义 LazyRow 拖动或滚动行为?

问题描述

下图解释了我想要实现的规范

在此处输入图像描述

如果用户将上一个(或下一个)项目拖动到 some ,我想制作 Lazy Row 滚动项目X_SCROLL_THRESHOLD

Pager我考虑在 Jetpack compose 示例应用程序Jet Caster中尝试,但我想展示很多项目(1788 个项目),所以我不确定Pager方法是否比使用LazyRow.

有没有办法在 android Jetpack Compose 中自定义 LazyRow 拖动或滚动行为?

标签: androidandroid-jetpack-compose

解决方案


您可以尝试 Pager Layouts。它目前是一个实验性 API。希望 Google 开发人员尽快使其成为通用撰写库的一部分。

使用 rememberPagerState 管理 initialOffscreenLimit(当前页面两侧保留的页面数)。

https://google.github.io/accompanist/pager/

Google Github 示例链接 - https://github.com/google/accompanist/tree/main/sample/src/main/java/com/google/accompanist/sample/pager

您需要在您的应用程序 gradle 中包含此依赖项

//Pager
implementation "com.google.accompanist:accompanist-pager:0.18.0"

一个简单的例子

// Display 10 items
    val pagerState = rememberPagerState(
        pageCount = 10,
        initialOffscreenLimit = 2
    )

    HorizontalPager(state = pagerState) { page ->
        // Our page content
        Column(
            horizontalAlignment = Alignment.CenterHorizontally,
            verticalArrangement = Arrangement.Center,
            modifier = Modifier.fillMaxSize()
        ) {
            Text(
                text = "Item: $page",
                textAlign = TextAlign.Center,
                modifier = Modifier.fillMaxWidth()
            )
            Text(
                text = "Something Else",
                textAlign = TextAlign.Center,
                modifier = Modifier.fillMaxWidth()
            )
            //Your other composable
        }
    }

布局检查器在当前页面的两侧展示了 2 个项目的 offscreenLimit

布局检查器


推荐阅读