我有一个像这样的懒惰专栏
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 左右。
这将违背
LazyColumn
的全部目的。当你这样使用它时,lazy
部分将不起作用。您可以使用正常的 Column
,这在性能方面没有任何区别。尤其是10个项目,这样的数字LazyColumn
是巨大的杀伤力。为您的案例提供奖励 - Column
支持 wrapContentHeight()
。
TLDR - 只需使用
Column
和 wrapContentHeight()
就可以了
LazyColumn(modifier = Modifier
.wrapContentHeight()
.heightIn(max = 220.dp)
) {
items(myList) { item ->
Text(text = item.name)
}
}