如何在 Jetpack Compose 中扩展惰性列的完整高度?

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

我有一个像这样的懒惰专栏

LazyColumn(
    modifier = Modifier
        .fillMaxWidth()
        .height(gridMultiple(i = 15) * data.size)
        .padding(vertical = gridMultiple(i = 2)),
    verticalArrangement = Arrangement.spacedBy(gridMultiple(i = 2)),
    userScrollEnabled = false
) {
    items(data.size) { index ->
        val item = data[index]

        ListItem(
            item,
            editButtonClick = { id -> onEditClick(id) }
        )
    }
}

它被封装在互操作可组合 XML 元素中,如下所示:

<androidx.compose.ui.platform.ComposeView
  android:id="@+id/informationList"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" />

问题是

informationList
位于 ScrollView (XML) 内部,我希望惰性列列表在滚动视图中完全展开。但我不知道元素需要的高度,所以我在这里做这个数学:

.height(gridMultiple(i = 15) * data.size)

但它使用的空间要么太多,要么不够。因此,要么元素被切断,要么它们末尾有很多空白。我想使用 LazyColumn 所需的空间。如果我将高度设置为环绕,则会出现一个异常,即惰性列具有无限可能的高度,并且必须指定高度。一定有办法做到这一点。我知道惰性列中元素的最大数量限制为 10 左右。

android kotlin android-jetpack-compose android-jetpack
2个回答
0
投票

这将违背

LazyColumn
的全部目的。当你这样使用它时,
lazy
部分将不起作用。您可以使用正常的
Column
,这在性能方面没有任何区别。尤其是10个项目,这样的数字
LazyColumn
是巨大的杀伤力。为您的案例提供奖励 -
Column
支持
wrapContentHeight()

TLDR - 只需使用

Column
wrapContentHeight()
就可以了


0
投票
LazyColumn(modifier = Modifier
                    .wrapContentHeight()
                    .heightIn(max = 220.dp)
                ) {
                    items(myList) { item ->
                        Text(text = item.name)
                    }
                }
© www.soinside.com 2019 - 2024. All rights reserved.