Jetpack Compose bietet mehrere Layoutcontainer, mit denen Sie Ihre UI-Komponenten strukturieren und anordnen können. Grundlegende Layout-Kompositionen wie Row und Column sind für einfache Anordnungen geeignet. Viele Apps erfordern jedoch reaktionsschnellere und anpassungsfähigere Containerlösungen, da sich die Bildschirmgrößen ändern und die Nutzerdaten zunehmen.
Layoutcontainer umfassen Folgendes:
- Lazy Lists und Lazy Grids: Komponenten wie
LazyColumn,LazyRowundLazyVerticalGrid, die große oder dynamisch dimensionierte Datasets effizient anzeigen, indem sie nur Elemente zusammensetzen und anordnen, die im Darstellungsbereich sichtbar sind. - Pager: Container wie
HorizontalPagerundVerticalPager, mit denen Nutzer zwischen Inhaltsseiten wischen oder scrollen können. - Flusslayouts: Responsive eindimensionale Container (
FlowRowundFlowColumn), die überlaufende Elemente automatisch in die nächste Zeile oder Spalte umbrechen, wenn der Platz nicht ausreicht. - Grid: Eine flexible, zweidimensionale Struktur, in der Elemente in mehrspaltigen oder mehrzeiligen Layouts angezeigt werden, die sich an die Containergröße anpassen.
- FlexBox: Ein von CSS Flexbox inspirierter, adaptiver Container, der eine detaillierte Steuerung darüber ermöglicht, wie Elemente umbrochen, vergrößert, verkleinert und entlang der Haupt- und Querachse ausgerichtet werden, um den verfügbaren Platz zu füllen.
Richtigen Layoutcontainer auswählen
Wenn Sie Layouts in Compose erstellen, hängt die Wahl zwischen einfachen und komplexeren Layoutcontainern von Ihrem Design ab, davon, ob Elemente bei Platzmangel umgebrochen werden müssen, und davon, wie die Größe von Elementen dynamisch angepasst wird.
In der folgenden Tabelle sind die Funktionen der einzelnen 1D-Layoutcontainer von Compose zusammengefasst:
Container |
Elemente werden in neue Zeilen umgebrochen |
Vergrößern pro Element |
Verkleinerung pro Element |
Anfangsgröße pro Element |
Elemente werden vergrößert, um den verfügbaren Platz in mehreren Zeilen auszufüllen |
Elemente neu anordnen |
Lazy Loading |
Optimal für: |
Zeile / Spalte |
❌ |
✅ (über |
❌ |
❌ |
❌ |
❌ |
❌ |
|
FlowRow / FlowColumn |
✅ |
Eingeschränkt |
❌ |
❌ |
Teilweise |
❌ |
❌ |
|
LazyRow / LazyColumn |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
|
FlexBox |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
In der folgenden Tabelle sind die Funktionen für Grid und andere ähnliche Composables zusammengefasst:
Container |
Strikte 2D-Ausrichtung |
Elementübergreifend (Spalten) |
Elementübergreifend (Zeilen) |
Lazy Loading |
Optimal für: |
Raster |
✅ |
✅ (über |
✅ |
❌ |
|
LazyVerticalGrid |
✅ |
✅ (über |
❌ |
✅ |
|
LazyStaggeredGrid |
❌ (nur 1D) |
Teilweise (nur vollständiger Zeitraum) |
❌ |
✅ |
|
LazyHorizontalGrid |
✅ |
❌ |
✅ |
✅ |
|
Zeilen und Spalten kombinieren |
❌ |
❌ |
❌ |
❌ |
|