Jetpack Compose 中列和行的 Expanded 和 LayoutSize.Expand 之间的区别

Bir*_*ani 5 android android-jetpack-compose

我在 Android Studio Canary 1 上尝试 Jetpack Compose,并向Columnui 添加了可组合项。Column有一个名为的属性modifier,我们可以在其中传递不同的修饰符。我使用了Expanded修饰符,导致Column占用了所有可用空间。

另外,Column具有mainAxisSizecrossAxisSize属性,所以我也尝试了它们并将其设置为LayoutSize.Expand旨在扩展我认为的给定轴。这也导致Column占用了所有可用空间。查看下面的示例:

1.使用LayoutSize.Expand

Column(mainAxisSize = LayoutSize.Expand,
crossAxisSize = LayoutSize.Expand) {
    Text("Jetpack",modifier = ExpandedHeight)
    Text("Compose",modifier = ExpandedHeight)
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

2. 使用扩展

Column(modifier = Expanded) {
    Text("Jetpack",modifier = ExpandedHeight)
    Text("Compose",modifier = ExpandedHeight)
}
Run Code Online (Sandbox Code Playgroud)

输出:

在此输入图像描述

观察发现以下代码提供相同的输出。Expanded那么and 和之间LayoutSize.Expand 有什么区别呢?ColumnRow

小智 3

它们是实现同一目标的两种方法:

Expanded修改器强制目标组件填充所有可用空间。它可以应用于任何接受修饰符的可组合项。

mainAxisSize 参数是设置布局大小的一种方法,是特定于 Row/Column 的参数。

您应该使用扩展修饰符。mainAxisSize 参数已从Column中删除。