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,
allineamento e gli spazi tra gli elementi.
Direzione del layout
La proprietà direction definisce l'asse principale, che determina la direzione
in cui vengono disposti gli elementi.
Row(valore predefinito): imposta l'asse principale in orizzontale. Nelle impostazioni internazionali da sinistra a destra la direzione sarà da sinistra a destra, mentre nelle impostazioni internazionali 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 extra 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 sostituito dai singoli elementi utilizzando il
alignSelf modificatore.
Le immagini seguenti mostrano il comportamento quando la direzione è Row:
|
|
|
|
|
|
|
|
|
|
|
Utilizza alignContent per allineare le righe all'asse trasversale e per distribuire lo spazio extra
tra le righe. Questa proprietà si applica solo quando sono presenti più righe
(il wrapping è abilitato). Le immagini seguenti mostrano il comportamento quando la direzione
è Row:
|
|
|
|
|
|
|
|
|
|
|
|
|
Aggregare elementi
Il wrapping consente a un container FlexBox di diventare multiriga, spostando gli elementi che non
rientrano in una nuova riga o colonna lungo l'asse trasversale. Configura il comportamento di wrapping
utilizzando wrap.
|
Esempio che utilizza la direzione |
|
|
|
|
|
|
L'esempio seguente mostra come funziona l'algoritmo di wrapping FlexBox. Il
FlexBox container 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.
Nella riga è disponibile uno spazio di 100dp. L'elemento secondario 1 è 20dp.
Lo spazio è sufficiente, quindi l'elemento secondario 1 viene inserito nella riga.
FlexBox container.Nella riga è disponibile uno spazio di 80dp. Lo spazio è 8dp. L'elemento secondario 2 è
40dp. Lo spazio richiesto è 48dp. Lo spazio è sufficiente, quindi lo spazio e l'elemento secondario 2
vengono inseriti nella riga.
FlexBox container dopo il primo elemento.Nella riga è disponibile uno spazio di 32dp. Lo spazio è 8dp. L'elemento secondario 3 è
50dp. Lo spazio richiesto è 58dp. Lo spazio nella riga corrente
non è sufficiente, quindi l'elemento secondario 3 viene inserito in una nuova riga.
Aggiungere spazi tra gli elementi
Aggiungi spazi tra righe e colonne utilizzando rowGap e columnGap. Questa opzione è utile
per evitare di aggiungere modificatori di spaziatura agli elementi secondari.
|
|
|
aggiunge spazio verticale tra elementi e righe. |
aggiunge spazio orizzontale tra elementi e righe. |
|