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 を含む 3 つのアイテムが含まれています。
この行には 100dp 個の空きスペースがあります。子 1 は 20dp です。スペースがあるため、子 1 が行に配置されます。
FlexBox コンテナに配置された最初のアイテム。この行には 80dp 個の空きスペースがあります。ギャップは 8dp です。Child 2 は 40dp です。必要なスペースは 48dp です。スペースがあるため、ギャップと Child 2 が行に配置されます。
FlexBox コンテナに配置された 2 番目のアイテム。この行には 32dp 個の空きスペースがあります。ギャップは 8dp です。Child 3 は 50dp です。必要なスペースは 58dp です。現在の行に十分なスペースがないため、Child 3 は新しい行に配置されます。
アイテム間にギャップを追加する
rowGap と columnGap を使用して、行と列の間にギャップを追加します。これは、子にスペーシング修飾子を追加しないようにする場合に便利です。
|
|
|
項目と行の間に垂直方向のスペースを追加します。 |
項目と行の間に水平方向のスペースを追加します。 |
|