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

박찬준*_*박찬준 8 android android-jetpack-compose

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

在此输入图像描述

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

我考虑尝试Pager在 Jetpack 撰写示例应用程序Jet Caster,但我想显示相当多的项目(1788 个项目),所以,我不确定Pager方法比使用LazyRow.

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

Ana*_*and 2

您可以尝试寻呼机布局。目前它是一个实验性 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"
Run Code Online (Sandbox Code Playgroud)

一个简单的例子

// 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
        }
    }

Run Code Online (Sandbox Code Playgroud)

布局检查器显示当前页面两侧的屏幕外限制为 2 个项目

布局检查器