1.介绍
可与内容组合的布局。根据传入的约束条件(Modifier,Alignment,propagateMinConstraints),该框将自行调整大小以适合内容。当子对象小于父对象时,默认情况下,它们将根据contentAlignment放置在框内。要单独指定子布局的对齐方式,请使用BoxScope.align修改器。默认情况下,将在不使用框的传入最小约束的情况下测量内容,除非“propagateMinConstraints”为true。例如,如果长方体包含无法直接指定修改器的内容,并且需要在长方体的内容上设置最小大小,则将propagateMinConstraints设置为true非常有用。如果将propagateMinConstraints设置为true,则框上设置的最小大小也将应用于内容,否则,最小大小将仅应用于框。当内容有多个子布局时,子布局将按组合顺序一个叠在另一个上,其实就类似于Android 的FrameLayout.
2.属性一览
inline fun Box(
modifier: Modifier = Modifier,
contentAlignment: Alignment = Alignment.TopStart,
propagateMinConstraints: Boolean = false,
content: BoxScope.() -> Unit
): @Composable Unit
参数
参数 | 含义 |
---|---|
modifier: Modifier = Modifier | [布局修饰符](Jetpack Compose - Modifier(基础) (juejin.cn)) |
contentAlignment: Alignment = Alignment.TopStart | Box中内容的对齐方式,类似于android:layout_gravity |
propagateMinConstraints: Boolean | 是否传播最小约束 |
content: BoxScope.() -> Unit | Box中的内容 |
Box中Modifier拓展函数
-
fun Modifier.align(alignment: Alignment): Modifier
Box参数contentAlignment: Alignment = Alignment.TopStart也可以在Modifier中设置,大多数控件都有这个拓展函数
-
fun Modifier.matchParentSize(): Modifier
填充满父布局的大小,同 android:layout_width="match_parent" 和 android:layout_height="match_parent"
使用实例
propagateMinConstraints 为true最小大小将限制子布局
带有约束条件的Box,BoxWithConstraints
使用实例
maxHeight是实际的屏幕高度,再preview中永远是0
总结
Box运用场景其实是和Android中FrameLayout相似的,BoxWithConstraints可以用来做一些布局变化适配不同的场景。