O Jetpack Compose oferece vários contêineres de layout para ajudar você a estruturar e
organizar os componentes da interface. Embora os elementos de composição de layout fundamentais, como Row e
Column, lidem com arranjos simples, muitos apps exigem soluções de contêiner mais responsivas
e adaptáveis à medida que os tamanhos de tela mudam e os dados do usuário aumentam.
Os contêineres de layout incluem:
- Listas e grades lentas: componentes como
LazyColumn,LazyRoweLazyVerticalGridque mostram com eficiência conjuntos de dados grandes ou de tamanho dinâmico, compondo e organizando apenas os itens visíveis na janela de visualização. - Pager: contêineres como
HorizontalPagereVerticalPagerque permitem que os usuários deslizem ou rolem entre páginas de conteúdo. - Layouts de fluxo: contêineres unidimensionais responsivos
(
FlowRoweFlowColumn) que agrupam automaticamente os itens excedentes na próxima linha ou coluna quando o espaço acaba. - Grade: uma estrutura flexível e bidimensional que mostra itens em layouts de várias colunas ou linhas que se adaptam ao tamanho do contêiner.
- FlexBox: um contêiner adaptável inspirado no Flexbox do CSS que oferece controle granular sobre como os itens são agrupados, aumentam, diminuem e se alinham ao longo dos eixos principal e transversal para preencher o espaço disponível.
Escolher o contêiner de layout correto
Ao criar layouts no Compose, a escolha entre contêineres de layout básicos e mais avançados depende do design, se os itens precisam ser agrupados quando o espaço é limitado e como eles são redimensionados dinamicamente.
A tabela a seguir resume os recursos de cada um dos contêineres de layout unidimensionais do Compose:
Contêiner |
Envolve itens em novas linhas |
Crescimento por item |
Encolhimento por item |
Tamanho inicial por item |
Os itens aumentam para preencher o espaço disponível em várias linhas |
Reorganizar itens |
Carregamento lento |
Ideal para: |
Linha / coluna |
❌ |
✅ (via |
❌ |
❌ |
❌ |
❌ |
❌ |
|
FlowRow / FlowColumn |
✅ |
Limitado |
❌ |
❌ |
Parcial |
❌ |
❌ |
|
LazyRow / LazyColumn |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
|
FlexBox |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
A tabela abaixo resume os recursos de Grid e outros elementos combináveis
semelhantes:
Contêiner |
Alinhamento 2D rigoroso |
Abrangência de itens (colunas) |
Item spanning (rows) |
Carregamento lento |
Ideal para: |
Grade |
✅ |
✅ (via |
✅ |
❌ |
|
LazyVerticalGrid |
✅ |
✅ (via |
❌ |
✅ |
|
LazyStaggeredGrid |
❌ (somente 1D) |
Parcial (somente período completo) |
❌ |
✅ |
|
LazyHorizontalGrid |
✅ |
❌ |
✅ |
✅ |
|
Como combinar linhas e colunas |
❌ |
❌ |
❌ |
❌ |
|