如要設定 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。
有空間,因此 Child 1 會放在該行。

FlexBox 容器中的第一個項目。該行有 80dp 可用空間。差距為 8dp。孩子 2 是
40dp。所需空間為 48dp。有空間,因此間隙和 Child 2 會放置在該行中。

FlexBox 容器中的第二個項目。該行有 32dp 可用空間。差距為 8dp。孩子 3 是
50dp。所需空間為 58dp。目前行空間不足,因此「Child 3」會換行。

在項目之間加入間隙
使用 rowGap 和 columnGap 在列和欄之間新增間距。這有助於避免在子項中加入間距修飾符。
|
|
|
在項目和行之間新增垂直空間。 |
在項目和行之間新增水平空間。 |
|