如何在一行中设置两个元素之间的间距?

31
如何在一行中两个元素之间使用 Spacer 填充,让一个元素在行的开头,另一个元素在行的末尾?
Row {
    Text("Start")
    Spacer(modifier = Modifier.SpaceBetween)  // How to set the modifier
    Text("End")
}
3个回答

62

Modifier.SpaceBetween不存在。

您可以在Row中使用horizontalArrangement参数,并应用Arrangement.SpaceBetween。此参数将子项放置在主轴上均匀分布,第一个子项前或最后一个子项后没有自由空间。

Row( modifier = Modifier.fillMaxWidth(),
        horizontalArrangement = Arrangement.SpaceBetween
    ) {
    Text("Start")
    Text("End")
}
作为另一种选择,您可以将weight(1f)应用于Spacer
类似这样的东西:
Row (modifier = Modifier.fillMaxWidth()) {
    Text("Start")
    Spacer(Modifier.weight(1f))
    Text("End")
}

输入图像描述


如果我的“开始”文本足够长,以至于它延伸到“结束”文本,该如何限制“开始”的宽度仅限于“结束”开始的位置? - Ali_Waris
4
在这种情况下,您可以使用Arrangement.SpaceBetween并将weight修饰符应用于第一个文本。 - Gabriele Mariotti
为什么我不加fillmaxwidth就无法正常工作?我只是想知道为什么。 - NewPartizal
1
@NewPartizal 因为horizontalArrangement会根据可用空间来放置子元素。 - Gabriele Mariotti

16
您可以使用这个:
Row(
    modifier = Modifier.fillMaxWidth(),
    horizontalArrangement = Arrangement.SpaceBetween
) {
    Text("Start")
    Text("End")
}

5
可能的水平排列如下所示。我添加了3个元素以增加清晰度。
Row(
    modifier = Modifier.fillMaxWidth(),
    horizontalArrangement = Arrangement.SpaceEvenly
) {
    TextButtons...
  }

Space evenly

Row(
    modifier = Modifier.fillMaxWidth(),
    horizontalArrangement = Arrangement.SpaceBetween
) {
    TextButtons...
  }

Space Between

Row(
    modifier = Modifier.fillMaxWidth(),
    horizontalArrangement = Arrangement.SpaceAround
) {
    TextButtons...
  }

enter image description here


3
我们还可以设置自定义的间距,使用horizontalArrangement = Arrangement.spacedBy(4.dp) - undefined

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