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