如需配置 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。
有空间,因此子项 1 会放置在该行中。
FlexBox 容器中的第一个项。该行中有 80dp 的可用空间。间距为 8dp。子项 2 为 40dp。所需空间为 48dp。有空间,因此间距和子项 2 会放置在该行中。
FlexBox 容器中的第二个项(在第一个项之后)。该行中有 32dp 的可用空间。间距为 8dp。子项 3 为 50dp。所需空间为 58dp。当前行中没有足够的空间,因此子项 3 会放置在新行中。
在项之间添加间距
使用 rowGap 和 columnGap 在行和列之间添加间距。这有助于避免向子项添加间距修饰符。
|
|
|
在项和行之间添加垂直空间。 |
在项和行之间添加水平空间。 |
|