Per configurare il comportamento del container FlexBox, crea un blocco FlexBoxConfig e forniscilo utilizzando il parametro config.
FlexBox( config = { direction(FlexDirection.Column) wrap(FlexWrap.Wrap) alignItems(FlexAlignItems.Center) alignContent(FlexAlignContent.SpaceAround) justifyContent(FlexJustifyContent.Center) gap(16.dp) } ) { // child items }
Utilizza FlexBoxConfig per definire la direzione del layout, il comportamento di wrapping,
l'allineamento e gli spazi tra gli elementi.
Direzione del layout
La funzione direction imposta l'asse principale, che determina la direzione
in cui vengono disposti gli elementi. Accetta i seguenti valori:
Row(predefinito): imposta l'asse principale in orizzontale. Nelle impostazioni internazionali da sinistra a destra, la direzione sarà da sinistra a destra, mentre in quelle da destra a sinistra sarà il contrario.RowReverse: inverte la direzione diRow.Column: imposta l'asse principale in verticale, dall'alto verso il basso.ColumnReverse: inverte la direzione diColumn.
Allineare gli elementi e distribuire lo spazio extra
Le sezioni seguenti descrivono come allineare gli elementi e distribuire lo spazio aggiuntivo lungo gli assi principale e trasversale.
Lungo l'asse principale
Utilizza justifyContent per distribuire gli elementi lungo l'asse principale. La seguente
tabella mostra il comportamento quando la direzione è Row.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Lungo l'asse trasversale
Utilizza alignItems per allineare gli elementi lungo l'asse trasversale all'interno di una singola riga. Questo
comportamento può essere ignorato dai singoli elementi utilizzando il
modificatore alignSelf.
Le seguenti immagini mostrano il comportamento quando la direzione è Row:
|
|
|
|
|
|
|
|
|
|
|
Utilizza alignContent per allineare le linee all'asse trasversale e per distribuire lo spazio
aggiuntivo tra le linee. Questa proprietà viene applicata solo quando sono presenti più righe
(il wrapping è attivato). Le seguenti immagini mostrano il comportamento quando la direzione
è Row:
|
|
|
|
|
|
|
|
|
|
|
|
|
Aggregare elementi
Il wrapping consente a un contenitore FlexBox di diventare multilinea, spostando gli elementi che non
rientrano in una nuova riga o colonna lungo l'asse trasversale. Configura il comportamento di wrapping
utilizzando wrap.
Valore |
Esempio di utilizzo della direzione |
|
|
|
|
|
|
Il seguente esempio mostra come funziona l'algoritmo di wrapping FlexBox. Il contenitore
FlexBox ha una dimensione principale di 100dp, con wrap impostato su
FlexWrap.Wrap e uno spazio di 8dp. Contiene tre elementi con basis 20dp,
40dp e 50dp, rispettivamente.
C'è 100dp spazio disponibile nella coda. Il bambino 1 è 20dp.
C'è spazio, quindi il bambino 1 viene inserito nella fila.
FlexBox.C'è 80dp spazio disponibile nella coda. Il divario è 8dp. Il bambino 2 è
40dp. Lo spazio richiesto è 48dp. C'è spazio, quindi lo spazio e Child 2
vengono inseriti nella riga.
FlexBox dopo il primo elemento.C'è 32dp spazio disponibile nella coda. Il divario è 8dp. Il bambino 3 è
50dp. Lo spazio richiesto è 58dp. Non c'è spazio sufficiente nella riga
corrente, quindi Child 3 viene inserito in una nuova riga.
Aggiungere spazi tra gli elementi
Aggiungi spazi tra righe e colonne utilizzando rowGap e columnGap. È utile
per evitare di aggiungere modificatori di spaziatura ai caratteri secondari.
|
|
|
aggiunge spazio verticale tra elementi e righe. |
aggiunge spazio orizzontale tra elementi e righe. |
|