Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Puoi gestire set di dati di grandi dimensioni e contenuti dinamici con le griglie lazy, migliorando le prestazioni dell'app. Con i composabili della griglia lazy, puoi visualizzare gli elementi in un
contenuto scorrevole, su più colonne o righe.
Compatibilità delle versioni
Questa implementazione richiede che il valore minSDK del progetto sia impostato sul livello API 21 o superiore.
Dipendenze
Decidi l'orientamento della griglia
I composabili LazyHorizontalGrid e LazyVerticalGrid supportano la visualizzazione degli elementi in una griglia. Una griglia verticale lazy mostra i suoi elementi
in un contenitore scorrevole verticalmente, su più colonne, mentre
le griglie orizzontali lazy hanno lo stesso comportamento sull'asse orizzontale.
Creare una griglia scorrevole
Il seguente codice crea una griglia con scorrimento orizzontale con tre colonne:
@ComposablefunScrollingGrid(){valitemsList=(0..15).toList()valitemModifier=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)}}}
Il composable LazyHorizontalGrid determina l'orientamento orizzontale della griglia.
Per creare una griglia verticale, utilizza LazyVerticalGrid.
La proprietà rows specifica come organizzare i contenuti della griglia.
Per una griglia verticale, utilizza la proprietà columns per specificare l'ordinamento.
items(itemsList) aggiunge itemsList a LazyHorizontalGrid. La funzione lambda visualizza un componibile Text per ogni elemento e imposta il testo sulla descrizione dell'elemento.
item() aggiunge un singolo elemento a LazyHorizontalGrid, mentre la funzione lambda rappresenta un singolo componibile Text in modo simile a items().
Per creare una griglia con il maggior numero possibile di righe, imposta il numero di righe utilizzando
GridCells.Adaptive.
Nel codice seguente, il valore 20.dp
specifica che ogni colonna deve essere di almeno 20 dp e che tutte le colonne devono avere la stessa
larghezza. Se lo schermo è largo 88 dp, ci sono 4 colonne da 22 dp ciascuna.
Risultati
Figura 1. Una griglia orizzontale scorrevole che utilizza LazyHorizontalGrid.
Raccolte che contengono questa guida
Questa guida fa parte di queste raccolte di guide rapide selezionate che coprono obiettivi di sviluppo Android più ampi:
Mostrare un elenco o una griglia
Elenchi e griglie consentono alla tua app di mostrare le raccolte in un formato piacevole dal punto di vista visivo e facilmente fruibile dagli utenti.
Scopri come le funzioni composable possono aiutarti a creare facilmente magnifici componenti dell'interfaccia utente basati sul sistema di progettazione Material Design.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-02-06 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-02-06 UTC."],[],[],null,["# Create a scrollable grid\n\n\u003cbr /\u003e\n\nYou can manage large datasets and dynamic content with lazy grids, improving app\nperformance. With lazy grid composables, you can display items in a scrollable\ncontainer, spanned across multiple columns or rows.\n\nVersion compatibility\n---------------------\n\nThis implementation requires that your project minSDK be set to API level 21 or\nhigher.\n\n### Dependencies\n\n### Kotlin\n\n\u003cbr /\u003e\n\n```kotlin\n implementation(platform(\"androidx.compose:compose-bom:2025.08.00\"))\n \n```\n\n\u003cbr /\u003e\n\n### Groovy\n\n\u003cbr /\u003e\n\n```groovy\n implementation platform('androidx.compose:compose-bom:2025.08.00')\n \n```\n\n\u003cbr /\u003e\n\nDecide grid orientation\n-----------------------\n\nThe [`LazyHorizontalGrid`](/reference/kotlin/androidx/compose/foundation/lazy/grid/package-summary#LazyHorizontalGrid(androidx.compose.foundation.lazy.grid.GridCells,androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.grid.LazyGridState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Horizontal,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,kotlin.Function1)) and [`LazyVerticalGrid`](/reference/kotlin/androidx/compose/foundation/lazy/grid/package-summary#LazyVerticalGrid(androidx.compose.foundation.lazy.grid.GridCells,androidx.compose.ui.Modifier,androidx.compose.foundation.lazy.grid.LazyGridState,androidx.compose.foundation.layout.PaddingValues,kotlin.Boolean,androidx.compose.foundation.layout.Arrangement.Vertical,androidx.compose.foundation.layout.Arrangement.Horizontal,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean,kotlin.Function1)) composables provide\nsupport for displaying items in a grid. A lazy vertical grid displays its items\nin a vertically scrollable container, spanned across multiple columns, while\nlazy horizontal grids have the same behavior on the horizontal axis.\n\n### Create a scrollable grid\n\nThe following code creates a horizontal scrolling grid with three columns:\n\n\n```kotlin\n@Composable\nfun ScrollingGrid() {\n val itemsList = (0..15).toList()\n\n val itemModifier = Modifier\n .border(1.dp, Color.Blue)\n .width(80.dp)\n .wrapContentSize()\n\n LazyHorizontalGrid(\n rows = GridCells.Fixed(3),\n horizontalArrangement = Arrangement.spacedBy(16.dp),\n verticalArrangement = Arrangement.spacedBy(16.dp)\n ) {\n items(itemsList) {\n Text(\"Item is $it\", itemModifier)\n }\n\n item {\n Text(\"Single item\", itemModifier)\n }\n }\n}https://github.com/android/snippets/blob/dd30aee903e8c247786c064faab1a9ca8d10b46e/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt#L835-L857\n```\n\n\u003cbr /\u003e\n\n### Key points about the code\n\n- The `LazyHorizontalGrid` composable determines the horizontal orientation of the grid.\n - To create a vertical grid, use the `LazyVerticalGrid` instead.\n- The `rows` property specifies how to arrange the grid content.\n - For a vertical grid, use the `columns` property to specify the arrangement.\n- [`items(itemsList)`](/reference/kotlin/androidx/compose/foundation/lazy/LazyListScope#items(kotlin.Int,kotlin.Function1,kotlin.Function1,kotlin.Function2)) adds `itemsList` to `LazyHorizontalGrid`. The lambda renders a [`Text`](/reference/kotlin/androidx/compose/material/package-summary#Text(androidx.compose.ui.text.AnnotatedString,androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Color,androidx.compose.ui.unit.TextUnit,androidx.compose.ui.text.font.FontStyle,androidx.compose.ui.text.font.FontWeight,androidx.compose.ui.text.font.FontFamily,androidx.compose.ui.unit.TextUnit,androidx.compose.ui.text.style.TextDecoration,androidx.compose.ui.text.style.TextAlign,androidx.compose.ui.unit.TextUnit,androidx.compose.ui.text.style.TextOverflow,kotlin.Boolean,kotlin.Int,kotlin.Int,kotlin.collections.Map,kotlin.Function1,androidx.compose.ui.text.TextStyle)) composable for each item and set the text to the item description.\n- [`item()`](/reference/kotlin/androidx/compose/foundation/lazy/LazyListScope#item(kotlin.Any,kotlin.Any,kotlin.Function1)) adds a single item to `LazyHorizontalGrid` while the lambda renders a single `Text` composable in a similar manner to `items()`.\n- [`GridCells.Fixed`](/reference/kotlin/androidx/compose/foundation/lazy/grid/GridCells.Fixed) defines the number of rows or columns.\n- To create a grid with as many rows as possible, set the number of rows using\n [`GridCells.Adaptive`](/reference/kotlin/androidx/compose/foundation/lazy/grid/GridCells.Adaptive).\n\n In the following code, the `20.dp` value\n specifies that every column is at least 20.dp, and all columns have equal\n widths. If the screen is 88.dp wide, there are 4 columns at 22.dp each.\n\n LazyVerticalGrid(\n columns = GridCells.Adaptive(minSize = 20.dp)\n )\n\nResults\n-------\n\n\u003cbr /\u003e\n\n**Figure 1.** A horizontal scrollable grid using `LazyHorizontalGrid`.\n\n\u003cbr /\u003e\n\nCollections that contain this guide\n-----------------------------------\n\nThis guide is part of these curated Quick Guide collections that cover\nbroader Android development goals: \n\n### Display a list or grid\n\nLists and grids allow your app to display collections in a visually pleasing form that's easy for users to consume. \n[Quick guide collection](/develop/ui/compose/quick-guides/collections/display-a-list-or-grid) \n\n### Display interactive components\n\nLearn how composable functions can enable you to easily create beautiful UI components based on the Material Design design system. \n[Quick guide collection](/develop/ui/compose/quick-guides/collections/display-interactive-components) \n\n### Compose basics (video collection)\n\nThis series of videos introduces various Compose APIs, quickly showing you what's available and how to use them. \n[Quick guide collection](/develop/ui/compose/quick-guides/collections/compose-basics) \n\nHave questions or feedback\n--------------------------\n\nGo to our frequently asked questions page and learn about quick guides or reach out and let us know your thoughts. \n[Go to FAQ](/quick-guides/faq) [Leave feedback](https://issuetracker.google.com/issues/new?component=1573691&template=1993320)"]]