如何计算最后一个可见项目后惰性列中的空白空间

Tip*_*iff 5 android android-jetpack android-jetpack-compose lazycolumn

如何计算 Jetpack compose 中最后一个可见项目之后惰性列中的空白空间。

在此输入图像描述

Thr*_*ian 4

您可以Modifier.onSizeChanged{intSize->}在 LazyColumn 及其父 Composble 上使用并检查它们之间的距离。

这里需要注意的一件事是,在获取父级和列表的大小后,需要再次重新组合。因此,您可能需要检查或参考此答案才能获得尺寸而无需重新组合

如何在不重新组合的情况下获得精确的尺寸?

@Composable
private fun LazyColumnParentSizeSample() {

    var parentHeight by remember { mutableStateOf(0) }
    var listHeight by remember { mutableStateOf(0) }
    Column(modifier=Modifier.fillMaxSize()
        .onSizeChanged {
            parentHeight = it.height
        }) {

        LazyColumn(modifier=Modifier.onSizeChanged {
            listHeight = it.height
        }){
            items(10) {
                Text("Item: $it")
            }
        }
        Text("listHeight: $listHeight, parent height: $parentHeight, difference: ${parentHeight-listHeight}")

    }
}
Run Code Online (Sandbox Code Playgroud)

要获得 dp 值,您可以使用LocalDensity.current

    val diffInDp = LocalDensity.current.run {(parentHeight-listHeight).toDp()  }
Run Code Online (Sandbox Code Playgroud)

  • 添加了带有 `Modifier.onSizeChanged` 的示例代码 (2认同)

归档时间:

查看次数:

1027 次

最近记录:

2 年,1 月 前