我想要一个垂直的惰性项目列表,其中当水平滚动不可用时,每个项目都采用父级宽度,否则所有子级中的最大 IntrinsicWidth 。
我大致知道如何使用 SubcomposeLayout 来做到这一点。但它需要手动实现惰性逻辑,这很难在不偶尔损害性能的情况下实现。而且 Subcompose 布局会将每个元素组合两次,这也很糟糕。
所以问题是如何实现这样的逻辑,而不需要从头开始痛苦地创建 LazyList?
这是我尝试过的最少代码。我使用 fillParentMaxWidth 修饰符,但它不起作用。 fillMaxWidth 也不起作用,因为当我在父级上使用horizontalScroll修饰符时,它会将无界约束传递给其子级,而 fillMaxWidth 只是被忽略。
LazyColumn 上的width(IntrinsicSize.Max)
修饰符也不起作用,因为“SubcomposeLayout 目前不支持内在测量”
LazyColumn(
modifier = Modifier
.fillMaxSize()
.horizontalScroll(rememberScrollState()),
) {
repeat(20) {
item {
Text(
text = "$it ................................",
modifier = Modifier
.fillParentMaxWidth()
.background(Color.Gray)
)
}
}
}
为什么要实施这种布局? 也许您可以尝试在每个项目中使用水平滚动的行。