Jetpack Compose中的免费滚动



这是对这个问题的修改。我有一个等距的图像网格,很好奇——有没有可能以自由的方式滚动它(包括对角线(。目前我有这个代码,可以滚动2D:

val scrollStateHorizontal = rememberScrollState()
val scrollStateVertical = rememberScrollState()
Box(
modifier = Modifier
.horizontalScroll(scrollStateHorizontal)
.verticalScroll(scrollStateVertical)
) {
for (i in 0..8) {
for (j in 0..7) {
val start = (y % 2 * 0.5 + x) * width
val top = i * height * 0.5
Image(modifier = Modifier.padding(start = start.dp, top = top.dp), painter = ...)                
}
}
}

有趣的是:

  1. 我可以对角滚动吗
  2. 如何优化它(内存消耗等(?也许我应该使用LazyHorizontalGrid,包括LazyVerticalGrid/LazyColumn/LazyRow

似乎不能简单地添加Modifier.verticalScroll来修改LazyHorizontalGrid。它在滚动的前几秒有一个滞后(可能是为了缓存项目(,而简单的Box滚动从一开始就很顺利。

据我所知,到目前为止,还没有官方对此的支持。从当前稳定版本开始,实现此功能的唯一方法是使用LazyLayoutComposable,或修改verticalScroll(或水平(Modifiers。请阅读此处。它是最近添加到API中的,因此文档非常稀少。您必须在web上查找示例实现。

"在这里阅读";

最新更新