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

Is there way to customize LazyRow drag or scroll behavior in android Jetpack Compose?

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

如果用户将上一个(或下一个)项目拖动到某些 X_SCROLL_THRESHOLD

,我想使 Lazy Row 滚动项目

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

更合适

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

您可以试试寻呼机布局。目前这是一个实验性的 API。希望 Google 开发者尽快将其纳入通用 compose 库。

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

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

Google Github 样本 link - 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