如需配置 FlexBox 容器的行为,请创建 FlexBoxConfig 块,并通过 config 参数提供该块。
FlexBox( config = { direction = FlexDirection.Column wrap = FlexWrap.Wrap alignItems = FlexAlignItems.Center alignContent = FlexAlignContent.SpaceAround justifyContent = FlexJustifyContent.Center gap(16.dp) } ) { // child items }
使用 FlexBoxConfig 定义布局方向、换行行为、对齐方式以及项之间的间距。
布局方向
direction 属性用于定义主轴,该主轴决定了项的布局方向。
Row(默认):将主轴设置为水平。在从左到右的语言区域中,此值为从左到右;在从右到左的语言区域中,此值为从右到左。RowReverse:反转Row的方向。Column:将主轴设置为垂直方向(从上到下)。ColumnReverse:反转Column的方向。
对齐项目并分配额外空间
以下部分介绍了如何对齐项目以及沿主轴和交叉轴分配额外空间。
沿主轴
使用 justifyContent 沿主轴分布项目。下表显示了当方向为 Row 时的行为。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
沿交叉轴
使用 alignItems 可在单行内沿交叉轴对齐项。各个商品可以使用 alignSelf 修饰符来替换此行为。
以下图片展示了方向为 Row 时的行为:
|
|
|
|
|
|
|
|
|
|
|
使用 alignContent 可将各行对齐到交叉轴,并在各行之间分配额外的空间。此属性仅在有多行文字(启用换行)时适用。以下图片展示了当方向为 Row 时的行为:
|
|
|
|
|
|
|
|
|
|
|
|
|
封装项目
换行功能可让 FlexBox 容器变为多行,并将不适合的项沿交叉轴移动到新行或新列。使用 wrap 配置换行行为。
|
使用方向 |
|
|
|
|
|
|
以下示例展示了 FlexBox 封装算法的运作方式。FlexBox 容器的主要大小为 100dp,wrap 设置为 FlexWrap.Wrap,间距为 8dp。它包含三个项目,分别具有 basis、20dp、40dp 和 50dp。
该行中有 100dp 个可用空间。子级 1 为 20dp。
有空间,因此将 Child 1 放置到该行中。
FlexBox 容器中的第一个商品。该行中有 80dp 个可用空间。差距为 8dp。儿童 2 为 40dp。所需空间为 48dp。有空间,因此间隙和 Child 2 会放置到该行中。
FlexBox 容器中的第二项(在第一项之后)。该行中有 32dp 个可用空间。差距为 8dp。子级 3 为 50dp。所需空间为 58dp。当前行中的空间不足,因此 Child 3 被放置在新行中。
在项目之间添加间距
使用 rowGap 和 columnGap 在行和列之间添加间距。这有助于避免向子项添加边距修饰符。
|
|
|
在项目和行之间添加垂直空间。 |
在项目和行之间添加水平空间。 |
|