Jetpack Compose udostępnia kilka kontenerów układu, które pomagają w strukturyzowaniu i rozmieszczaniu komponentów interfejsu. Podstawowe komponenty układu, takie jak Row i Column, obsługują proste układy, ale wiele aplikacji wymaga bardziej elastycznych i adaptacyjnych rozwiązań kontenerów, ponieważ rozmiary ekranu się zmieniają, a dane użytkowników rosną.
Kontenery układu obejmują:
- Leniwe listy i siatki: komponenty takie jak
LazyColumn,LazyRowiLazyVerticalGrid, które efektywnie wyświetlają duże lub dynamicznie skalowane zbiory danych, tworząc i układając tylko elementy widoczne w danym momencie w obszarze widoku. - Pager: kontenery takie jak
HorizontalPageriVerticalPager, które umożliwiają użytkownikom przesuwanie lub przewijanie stron z treścią. - Układy przepływu: elastyczne kontenery jednowymiarowe (
FlowRowiFlowColumn), które automatycznie przenoszą przepełnione elementy do następnego wiersza lub kolumny, gdy zabraknie miejsca. - Siatka: elastyczna, dwuwymiarowa struktura, która wyświetla elementy w układach wielokolumnowych lub wielowierszowych dostosowujących się do rozmiaru kontenera.
- FlexBox: inspirowany CSS Flexbox adaptacyjny kontener, który zapewnia szczegółową kontrolę nad tym, jak elementy zawijają się, powiększają, zmniejszają i wyrównują wzdłuż osi głównej i poprzecznej, aby wypełnić dostępne miejsce.
Wybieranie odpowiedniego kontenera układu
Podczas tworzenia układów w Compose wybór między podstawowymi a bardziej zaawansowanymi kontenerami układu zależy od projektu, tego, czy elementy muszą być zawijane, gdy przestrzeń jest ograniczona, oraz od tego, jak dynamicznie zmienia się rozmiar elementów.
W tabeli poniżej znajdziesz podsumowanie możliwości poszczególnych kontenerów układu jednowymiarowego w Compose:
Kontener |
Zawija elementy do nowych wierszy |
Rozwijanie poszczególnych elementów |
Zmniejszanie poszczególnych elementów |
Rozmiar początkowy na element |
Elementy rozszerzają się, aby wypełnić dostępne miejsce w wielu wierszach |
Zmienianie kolejności elementów |
Leniwe ładowanie |
Najlepsze zastosowania: |
Wiersz / kolumna |
❌ |
✅ (przez |
❌ |
❌ |
❌ |
❌ |
❌ |
|
FlowRow / FlowColumn |
✅ |
Ograniczony |
❌ |
❌ |
Częściowe |
❌ |
❌ |
|
LazyRow / LazyColumn |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
|
FlexBox |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
Tabela poniżej zawiera podsumowanie możliwości funkcji Grid i innych podobnych funkcji kompozycyjnych:
Kontener |
Ścisłe dopasowanie 2D |
Rozciąganie elementu (kolumny) |
Rozciąganie elementu (wiersze) |
Leniwe ładowanie |
Najlepsze zastosowania: |
Siatka |
✅ |
✅ (przez: |
✅ |
❌ |
|
LazyVerticalGrid |
✅ |
✅ (przez: |
❌ |
✅ |
|
LazyStaggeredGrid |
❌ (tylko 1D) |
Częściowe (tylko pełny zakres) |
❌ |
✅ |
|
LazyHorizontalGrid |
✅ |
❌ |
✅ |
✅ |
|
Łączenie wierszy i kolumn |
❌ |
❌ |
❌ |
❌ |
|