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 を使用して、1 行内の交差軸に沿ってアイテムを配置します。この
動作は、個々のアイテムで
alignSelf修飾子を使用してオーバーライドできます。
次の図は、方向が Row の場合の動作を示しています。
|
|
|
|
|
|
|
|
|
|
|
alignContent を使用して、行を交差軸に沿って配置し、行間の余白を分配します。このプロパティは、複数行の場合(折り返しが有効)にのみ適用されます。次の図は、方向が Row の場合の動作を示しています。
|
|
|
|
|
|
|
|
|
|
|
|
|
アイテムをラップする
折り返しにより、FlexBox コンテナを複数行にすることができ、収まらないアイテムを交差軸に沿って新しい行または列に移動できます。折り返し動作は wrap を使用して構成します。
|
方向 |
|
|
|
|
|
|
次の例は、FlexBox 折り返しアルゴリズムの仕組みを示しています。FlexBox コンテナのメインサイズは 100dp で、wrap は FlexWrap.Wrap に設定され、ギャップは 8dp です。これには、basis がそれぞれ 20dp、40dp、50dp の 3 つのアイテムが含まれています。
行には 100dp のスペースがあります。子 1 は 20dp です。
スペースがあるため、子 1 は行に配置されます。
FlexBox コンテナに配置された最初のアイテム。行には 80dp のスペースがあります。ギャップは 8dp です。子 2 は 40dp です。必要なスペースは 48dp です。スペースがあるため、ギャップと子 2 が行に配置されます。
FlexBox コンテナに配置された 2 番目のアイテム。行には 32dp のスペースがあります。ギャップは 8dp です。子 3 は 50dp です。必要なスペースは 58dp です。現在の行に十分なスペースがないため、子 3 は新しい行に配置されます。
アイテム間にギャップを追加する
rowGap と columnGap を使用して、行と列の間にギャップを追加します。これは、子に間隔修飾子を追加しない場合に便利です。
|
|
|
は、アイテムと行の間に垂直方向のスペースを追加します。 |
は、アイテムと行の間に水平方向のスペースを追加します。 |
|