如要設定 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。
由於有空間,因此子項 1 會放入該行。

FlexBox 容器中的第一個項目。排隊人數還有 80dp 個名額。差距為 8dp。孩子 2 是40dp。所需空間為 48dp。由於有空間,因此間隔和子項 2 會放入行中。

FlexBox 容器中,位於第一個項目之後。排隊人數還有 32dp 個名額。差距為 8dp。孩子 3 是50dp。所需空間為 58dp。目前這一行沒有足夠的空間,因此子項 3 會放在新的一行。

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