在 LazyColumn 上未添加子项时避免垂直排列间距

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

目前,我们正在使用

SDUI
开发一个应用程序。其中,在父屏幕映射器上,我们放置
Scaffold
LazyColumn
。在子级小部件映射器上,我们放置
items

我们在

item
内有条件
LazyColumn
可见性。如果条件不匹配,我们不会展示该商品。由于
LazyColumn
内部的条件逻辑并具有
verticalArrangement
,这会在下一项之间产生额外的间隙(如屏幕截图所示)。

作为一个简单的演示,我在下面放置了简单的逻辑。由于

verticalArrangement
spacing
,因此提供了额外的间距。

问题:有没有办法检测子项是否未添加并避免使用垂直间距?我知道我们可以使用子级别的间距来修复它,但由于应用程序上的架构安排,我们无法做到这一点。

        // Scaffold and LazyColumn are on screen level
        Scaffold {
            LazyColumn(
                modifier = Modifier.padding(it),
                // Can not remove verticalArrangement because of code architectural arrangement
                verticalArrangement = Arrangement.spacedBy(12.dp)
            ) {
                for (i in 1..5) {
                   // item is in widget level
                    item {
                        if (i != 4) {
                            Item("Title: $i")
                        }
                    }
                }
            }
        }

enter image description here

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

问题是,当你让它不可见时,你仍然会创建一个

item
。相反,您应该通过将条件移到
item
之外来完全删除该项目:

if (i != 4) {
    item {
        Item("Title: $i")
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.