É possível gerenciar grandes conjuntos de dados e conteúdo dinâmico com grids lentos, melhorando a performance do app. Com elementos combináveis de grade lenta, você pode mostrar itens em um contêiner rolável, dividido em várias colunas ou linhas.
Compatibilidade de versões
Essa implementação exige que o minSDK do projeto seja definido como nível 21 da API ou mais recente.
Dependências
Decidir a orientação da grade
Os elementos combináveis LazyHorizontalGrid e LazyVerticalGrid oferecem
suporte para a exibição de itens em uma grade. Uma grade vertical lenta mostra os itens
em um contêiner de rolagem vertical, dividido em várias colunas, enquanto
grades horizontais lentas têm o mesmo comportamento no eixo horizontal.
Criar uma grade rolável
O código abaixo cria uma grade de rolagem horizontal com três colunas:
@Composable fun ScrollingGrid() { val itemsList = (0..15).toList() val itemModifier = Modifier .border(1.dp, Color.Blue) .width(80.dp) .wrapContentSize() LazyHorizontalGrid( rows = GridCells.Fixed(3), horizontalArrangement = Arrangement.spacedBy(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp) ) { items(itemsList) { Text("Item is $it", itemModifier) } item { Text("Single item", itemModifier) } } }
Pontos principais sobre o código
- O elemento combinável
LazyHorizontalGriddetermina a orientação horizontal da grade.- Para criar uma grade vertical, use
LazyVerticalGrid.
- Para criar uma grade vertical, use
- A propriedade
rowsespecifica como organizar o conteúdo da grade.- Para uma grade vertical, use a propriedade
columnspara especificar o arranjo.
- Para uma grade vertical, use a propriedade
items(itemsList)adicionaitemsListaLazyHorizontalGrid. A lambda renderiza um elemento combinávelTextpara cada item e define o texto como a descrição do item.item()adiciona um único item aLazyHorizontalGrid, enquanto a lambda renderiza um único elemento combinávelTextde maneira semelhante aitems().GridCells.Fixeddefine o número de linhas ou colunas.Para criar uma grade com o máximo de linhas possível, defina o número de linhas usando
GridCells.Adaptive.No código abaixo, o valor
20.dpespecifica que cada coluna tem pelo menos 20.dp e todas as colunas têm larguras iguais. Se a tela tiver 88 dp de largura, haverá 4 colunas de 22 dp cada.
Resultados
LazyHorizontalGrid.Coleções que contêm este guia
Este guia faz parte destas coleções selecionadas de guias rápidos que abrangem metas mais amplas de desenvolvimento para Android:
Mostrar uma lista ou grade
Mostrar componentes interativos