تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكنك إدارة مجموعات البيانات الكبيرة والمحتوى الديناميكي باستخدام الشبكات البطيئة التحميل، ما يؤدي إلى تحسين
أداء التطبيق. باستخدام العناصر القابلة للتجميع في الشبكة البطيئة التحميل، يمكنك عرض العناصر في حاوية قابلة للتمرير
على مستوى أعمدة أو صفوف متعددة.
توافق الإصدار
يتطلّب هذا التنفيذ ضبط الحد الأدنى من إصدار حزمة SDK لمشروعك على المستوى 21 من واجهة برمجة التطبيقات أو
إصدار أحدث.
التبعيات
تحديد اتجاه الشبكة
توفّر العناصر القابلة للتجميع LazyHorizontalGrid وLazyVerticalGrid
إمكانية عرض العناصر في شبكة. تعرِض الشبكة العمودية البطيئة عناصرها
في حاوية قابلة للتمرير عموديًا، على مستوى أعمدة متعددة، في حين أنّه
تظهر الشبكة الأفقية البطيئة بالطريقة نفسها على المحور الأفقي.
إنشاء شبكة قابلة للتنقّل
تنشئ التعليمة البرمجية التالية شبكة لف أفقي يتضمّن ثلاثة أعمدة:
@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)}}}
لإنشاء شبكة تحتوي على أكبر عدد ممكن من الصفوف، اضبط عدد الصفوف باستخدام
GridCells.Adaptive.
في الرمز التالي، تحدد القيمة 20.dp
أنّ كل عمود لا يقلّ عن 20.dp، وأنّ جميع الأعمدة لها عرض
متساوٍ. إذا كانت الشاشة عريضة بـ 88.dp، سيكون هناك 4 أعمدة بحجم 22.dp لكل منها.
النتائج
الشكل 1. شبكة أفقية قابلة للتنقّل باستخدام LazyHorizontalGrid.
المجموعات التي تتضمّن هذا الدليل
هذا الدليل هو جزء من مجموعات الأدلة السريعة المنظَّمة التي تتناول
أهداف تطوير Android الأوسع نطاقًا:
عرض قائمة أو شبكة
تسمح القوائم والشبكات لتطبيقك بعرض المجموعات في شكلٍ
ممتع من الناحية المرئية ويسهل على المستخدمين الاطّلاع عليه.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-02-06 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-02-06 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],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)"]]