有没有办法在 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
下图解释了我要实现的规范
如果用户将上一个(或下一个)项目拖动到某些 X_SCROLL_THRESHOLD
。
我考虑过在 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