使用Jetpack Compose中的Spacer来填充剩余空间

26

我在思考是否有一种方法可以在Compose Beta01中实现“填充剩余空间”,而不需要额外的Box元素包装空白区域?遗憾的是,Spacer没有权重修饰符。

Column(
    modifier = Modifier
        .height(120.dp)
        .fillMaxWidth()
) {
    Text(
        text = "A"
    )
    Box(
        modifier = Modifier
            .weight(1f)
    ) {
        Spacer(
            Modifier
                .fillMaxHeight()
        )
    }
    Text(
        text = "B"
    )
}

编辑:

这个多余的盒子并不必要,我只是误用了修改器系统。另外值得一提的是,被选中的答案可能也是另一种实现这个功能的好方法。

3个回答

59

就我所知,Column.arrangement 均匀地应用于所有子元素。

如果您只想将剩余空间填充到最大,则使用带有 weight(1.0f) 修饰符的 Spacer 可能是您想要的:

Column(
    modifier = Modifier
        .fillMaxWidth()
) {
    Text("Text A") // top aligned
    Spacer(modifier = Modifier.weight(1.0f)) // fill height with spacer
    Text("Text B") // those two Texts are bottom aligned
    Text("Text C") 
}

这个答案更加合适,因为问题是关于使用Spacer。 - Mirado Andria

15

这是你需要的吗?

Column(
    modifier = Modifier
        .height(120.dp)
        .fillMaxWidth(),
    Arrangement.SpaceBetween
) {
    Text(text = "A")
    Text(text = "B")
}

你可以将元素排列为“SpaceAround”,“SpaceEvenly”和“SpaceBetween”。


我一开始使用修改器系统时用错了方法,但这条评论指引了我解决问题的方向。确实,在这些情况下进行排列非常有帮助。 - Eduardo Naveda

0
我们可以使用这段代码来解决这个问题。
           Row(horizontalArrangement = Arrangement.SpaceBetween) {
                Text(text = "Text 1")
                Spacer(modifier = Modifier.weight(1.0f))
                Text(text = "Text 2")                    
            }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接