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

问题描述 投票:0回答:3

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

android android-jetpack-compose android-jetpack lazycolumn
3个回答
3
投票

您可以在 LazyColumn 及其父 Composble 上使用

Modifier.onSizeChanged{intSize->}
并检查它们之间的距离。

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

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

@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}")

    }
}

要获取 dp 值,您可以使用

LocalDensity.current

    val diffInDp = LocalDensity.current.run {(parentHeight-listHeight).toDp()  }

2
投票

使用

Modifier.onSizeChanged{}
获取 LazyColumn 的大小


2
投票
LazyColumn(modifier = Modifier.onSizeChanged(size ->

int columnHeight = size.height
int screenHeight = //getyourscreenheighthere by using window class

int remainingSpacae = screenHeight - columnHeight

))

打开此链接获取屏幕高度 ->

Jetpack Compose 中的屏幕宽度和高度

© www.soinside.com 2019 - 2024. All rights reserved.