在 Jetpack Compose 中的水平滚动惰性列中填充最大宽度

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

我想要一个垂直的惰性项目列表,其中当水平滚动不可用时,每个项目都采用父级宽度,否则所有子级中的最大 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)
            )
        }
    }
}

代码输出

kotlin android-jetpack-compose lazycolumn compose-multiplatform compose-desktop
1个回答
0
投票

为什么要实施这种布局? 也许您可以尝试在每个项目中使用水平滚动的行。

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