android - 有没有办法在 android Jetpack Compose 中自定义 LazyRow 拖动或滚动行为?
问题描述
下图解释了我想要实现的规范
如果用户将上一个(或下一个)项目拖动到 some ,我想制作 Lazy Row 滚动项目X_SCROLL_THRESHOLD
。
Pager
我考虑在 Jetpack compose 示例应用程序Jet Caster中尝试,但我想展示很多项目(1788 个项目),所以我不确定Pager
方法是否比使用LazyRow
.
有没有办法在 android Jetpack Compose 中自定义 LazyRow 拖动或滚动行为?
解决方案
您可以尝试 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
推荐阅读
- javascript - 如何使用属性指定组件的打字稿类型
- jenkins-pipeline - 如何避免在 Jenkinsfile 中构建两次以获得不同的图像名称?
- c++ - C++ 内存,分配
- python - 将 PNG 转换为 JPEG 会在背景中产生像素噪点
- rust - 如何解决基本借款问题?
- python - 最快(最少执行时间)的方法来获取 int 数组的最大值/最小值,除了 range() 和 len() 之外没有内置函数
- python - 在python中执行定义为DAG的任务的简单方法?
- rust - 获取当前时间戳
- mysql - 更新新旧版本之前的 MySQL 触发器
- powerbi - 根据过滤器更改表的列