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 を使用して、行と列の間にギャップを追加します。これは、子に間隔修飾子を追加しないようにするのに役立ちます。
|
|
|
アイテムと行の間に垂直方向のスペースを追加します。 |
アイテムと行の間に水平方向のスペースを追加します。 |
|