Jetpack Compose fournit plusieurs conteneurs de mise en page pour vous aider à structurer et à organiser vos composants d'interface utilisateur. Bien que les composables de mise en page fondamentaux tels que Row et Column gèrent des dispositions simples, de nombreuses applications nécessitent des solutions de conteneur plus responsives et adaptatives à mesure que la taille de l'écran change et que les données utilisateur augmentent.
Les conteneurs de mise en page incluent les éléments suivants :
- Listes et grilles différées : composants tels que
LazyColumn,LazyRowetLazyVerticalGridqui affichent efficacement des ensembles de données volumineux ou de taille dynamique en composant et en disposant uniquement les éléments actuellement visibles dans la fenêtre d'affichage. - Pager : conteneurs tels que
HorizontalPageretVerticalPagerqui permettent aux utilisateurs de balayer ou de faire défiler les pages de contenu. - Mises en page de flux : conteneurs unidimensionnels responsifs (
FlowRowetFlowColumn) qui renvoient automatiquement les éléments qui dépassent à la ligne ou à la colonne suivante lorsque l'espace est insuffisant. - Grille : structure flexible en deux dimensions qui affiche les éléments dans des mises en page à plusieurs colonnes ou plusieurs lignes qui s'adaptent à la taille du conteneur.
- FlexBox : conteneur adaptatif inspiré de CSS Flexbox, qui permet de contrôler de manière précise la façon dont les éléments s'ajustent, s'agrandissent, se réduisent et s'alignent le long des axes principal et transversal pour remplir l'espace disponible.
Choisir le bon conteneur de mise en page
Lorsque vous créez des mises en page dans Compose, le choix entre des conteneurs de mise en page de base et des conteneurs plus avancés dépend de votre conception, de la nécessité de renvoyer les éléments à la ligne lorsque l'espace est limité et de la façon dont les éléments sont redimensionnés de manière dynamique.
Le tableau suivant récapitule les fonctionnalités de chacun des conteneurs de mise en page Compose 1D :
Conteneur |
Renvoie les éléments à la ligne |
Croissance par élément |
Réduction par article |
Taille de départ par élément |
Les éléments s'agrandissent pour remplir l'espace disponible sur plusieurs lignes |
Modifier l'ordre des éléments |
Chargement différé |
Recommandé pour : |
Ligne / Colonne |
❌ |
✅ (via |
❌ |
❌ |
❌ |
❌ |
❌ |
|
FlowRow / FlowColumn |
✅ |
Limité |
❌ |
❌ |
Partielle |
❌ |
❌ |
|
LazyRow / LazyColumn |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
|
FlexBox |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
Le tableau suivant récapitule les fonctionnalités de Grid et d'autres composables similaires :
Conteneur |
Alignement 2D strict |
Étendue de l'élément (colonnes) |
Étendue de l'élément (lignes) |
Chargement différé |
Recommandé pour : |
Grille |
✅ |
✅ (via |
✅ |
❌ |
|
LazyVerticalGrid |
✅ |
✅ (via |
❌ |
✅ |
|
LazyStaggeredGrid |
❌ (1D uniquement) |
Partielle (uniquement sur toute la durée) |
❌ |
✅ |
|
LazyHorizontalGrid |
✅ |
❌ |
✅ |
✅ |
|
Combiner des lignes et des colonnes |
❌ |
❌ |
❌ |
❌ |
|