تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يعمل العنصر القابل للإنشاء Card كحاوية Material Design لواجهة المستخدم.
تعرض البطاقات عادةً جزءًا واحدًا متماسكًا من المحتوى. في ما يلي بعض الأمثلة على الحالات التي يمكنك فيها استخدام بطاقة:
منتج في تطبيق للتسوّق
خبر في تطبيق للأخبار
رسالة في تطبيق للتواصل
والتركيز على عرض جزء واحد من المحتوى هو ما يميّز
Card عن الحاويات الأخرى. على سبيل المثال، يوفّر Scaffold بنية عامة
لشاشة كاملة. البطاقة هي بشكل عام عنصر أصغر في واجهة المستخدم ضمن تخطيط أكبر، بينما يوفّر مكوّن التخطيط، مثل Column أو Row، واجهة برمجة تطبيقات أبسط وأكثر عمومية.
الشكل 1. مثال على بطاقة تتضمّن نصًا ورموزًا
التنفيذ الأساسي
يتشابه سلوك Card إلى حدّ كبير مع سلوك الحاويات الأخرى في Compose. يمكنك تحديد محتوى هذا العنصر من خلال استدعاء عناصر أخرى قابلة للإنشاء بداخله. على سبيل المثال، لنفترض أنّ Card يتضمّن طلبًا إلى Text في المثال البسيط التالي:
اطّلِع على المرجع لمعرفة تعريف واجهة برمجة التطبيقات Card. ويحدّد هذا الملف عدة مَعلمات تتيح لك تخصيص مظهر المكوّن وسلوكه.
في ما يلي بعض المَعلمات الرئيسية التي يجب ملاحظتها:
elevation: تضيف هذه السمة ظلًا إلى المكوّن، ما يجعله يبدو مرتفعًا عن الخلفية.
colors: تستخدم النوع CardColors لضبط اللون التلقائي لكل من الحاوية وأي عناصر فرعية.
enabled: إذا مرّرت القيمة false لهذه المَعلمة، ستظهر البطاقة على أنّها غير مفعّلة ولن تستجيب لإدخالات المستخدم.
onClick: لا يقبل Card عادةً أحداث النقرات. وبالتالي، فإنّ التحميل الزائد الأساسي الذي يجب ملاحظته هو الذي يحدّد المَعلمة onClick. يجب استخدام هذا التحميل الزائد إذا كنت تريد أن يستجيب تنفيذك للدالة Card لعمليات الضغط التي يجريها المستخدم.
يوضّح المثال التالي كيف يمكنك استخدام هذه المَعلمات، بالإضافة إلى المَعلمات الشائعة الأخرى، مثل shape وmodifier.
بطاقة معبّأة
في ما يلي مثال على كيفية تنفيذ بطاقة مملوءة.
المفتاح هنا هو استخدام السمة colors لتغيير لون التعبئة.
لا تتضمّن البطاقات إجراءات التمرير أو الإغلاق، ولكن يمكن دمجها في عناصر قابلة للإنشاء توفّر هذه الميزات. على سبيل المثال، لتنفيذ ميزة "التمرير السريع للإغلاق" على بطاقة، يجب دمجها مع العنصر القابل للإنشاء SwipeToDismiss. لدمج
التمرير، استخدِم أدوات تعديل التمرير، مثل verticalScroll. يمكنك الاطّلاع على مستندات
Scroll لمزيد من المعلومات.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-28 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","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-08-28 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["The [`Card`](/reference/kotlin/androidx/compose/material3/package-summary#Card(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Shape,androidx.compose.material3.CardColors,androidx.compose.material3.CardElevation,androidx.compose.foundation.BorderStroke,kotlin.Function1)) composable acts as a Material Design container for your UI.\nCards typically present a single coherent piece of content. The following are\nsome examples of where you might use a card:\n\n- A product in a shopping app.\n- A news story in a news app.\n- A message in a communications app.\n\nIt is the focus on portraying a single piece of content that distinguishes\n`Card` from other containers. For example, `Scaffold` provides general structure\nto a whole screen. Card is generally a smaller UI element inside a larger\nlayout, whereas a layout component such as `Column` or `Row` provides a simpler\nand more generic API.\n**Figure 1.** An example of a card populated with text and icons.\n\nBasic implementation\n\n`Card` behaves much like other containers in Compose. You declare its content by\ncalling other composables within it. For example, consider how `Card` contains a\ncall to `Text` in the following minimal example: \n\n @Composable\n fun CardMinimalExample() {\n Card() {\n Text(text = \"Hello, world!\")\n }\n }\n\n| **Note:** By default, a `Card` wraps its content in a `Column` composable, placing each item inside the card below one another.\n\nAdvanced implementations\n\nSee the [reference](/reference/kotlin/androidx/compose/material3/package-summary#Card(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Shape,androidx.compose.material3.CardColors,androidx.compose.material3.CardElevation,androidx.compose.foundation.BorderStroke,kotlin.Function1)) for the API definition of `Card`. It defines several\nparameters that allow you customize the appearance and behavior of the\ncomponent.\n\nSome key parameters to note are the following:\n\n- **`elevation`**: Adds a shadow to the component that makes it appear elevated above the background.\n- **`colors`** : Uses the `CardColors` type to set the default color of both the container and any children.\n- **`enabled`** : If you pass `false` for this parameter, the card appears as disabled and does not respond to user input.\n- **`onClick`** : Ordinarily, a `Card` does not accept click events. As such, the primary overload you would like to note is that which defines an `onClick` parameter. You should use this overload if you would like your implementation of `Card` to respond to presses from the user.\n\nThe following example demonstrates how you might use these parameters, as well\nas other common parameters such as `shape` and `modifier`.\n| **Beta:** The `Card` overload that defines the `onClick` parameter is experimental.\n\nFilled card\n\nThe following is an example of how you can implement a filled card.\n\nThe key here is the use of the `colors` property to change the filled\ncolor.\n\n\n```kotlin\n@Composable\nfun FilledCardExample() {\n Card(\n colors = CardDefaults.cardColors(\n containerColor = MaterialTheme.colorScheme.surfaceVariant,\n ),\n modifier = Modifier\n .size(width = 240.dp, height = 100.dp)\n ) {\n Text(\n text = \"Filled\",\n modifier = Modifier\n .padding(16.dp),\n textAlign = TextAlign.Center,\n )\n }\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt#L106-L122\n```\n\n\u003cbr /\u003e\n\nThis implementation appears as follows:\n**Figure 2.** Example of a filled card.\n\nElevated Card\n\nThe following snippet demonstrates how to implement an elevated card. Use the\ndedicated [`ElevatedCard`](/reference/kotlin/androidx/compose/material3/package-summary#ElevatedCard(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Shape,androidx.compose.material3.CardColors,androidx.compose.material3.CardElevation,kotlin.Function1)) composable.\n\nYou can use the `elevation` property to control the appearance of elevation and\nthe resulting shadow.\n\n\n```kotlin\n@Composable\nfun ElevatedCardExample() {\n ElevatedCard(\n elevation = CardDefaults.cardElevation(\n defaultElevation = 6.dp\n ),\n modifier = Modifier\n .size(width = 240.dp, height = 100.dp)\n ) {\n Text(\n text = \"Elevated\",\n modifier = Modifier\n .padding(16.dp),\n textAlign = TextAlign.Center,\n )\n }\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt#L85-L101\n```\n\n\u003cbr /\u003e\n\nThis implementation appears as follows:\n**Figure 3.** Example of an elevated card.\n\nOutlined Card\n\nThe following is an example of an outlined card. Use the dedicated\n[`OutlinedCard`](/reference/kotlin/androidx/compose/material3/package-summary#OutlinedCard(androidx.compose.ui.Modifier,androidx.compose.ui.graphics.Shape,androidx.compose.material3.CardColors,androidx.compose.material3.CardElevation,androidx.compose.foundation.BorderStroke,kotlin.Function1)) composable.\n\n\n```kotlin\n@Composable\nfun OutlinedCardExample() {\n OutlinedCard(\n colors = CardDefaults.cardColors(\n containerColor = MaterialTheme.colorScheme.surface,\n ),\n border = BorderStroke(1.dp, Color.Black),\n modifier = Modifier\n .size(width = 240.dp, height = 100.dp)\n ) {\n Text(\n text = \"Outlined\",\n modifier = Modifier\n .padding(16.dp),\n textAlign = TextAlign.Center,\n )\n }\n}https://github.com/android/snippets/blob/5673ffc60b614daf028ee936227128eb8c4f9781/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt#L127-L144\n```\n\n\u003cbr /\u003e\n\nThis implementation appears as follows:\n**Figure 4.** Example of an outlined card.\n\nLimitations\n\nCards don't come with inherent scroll or dismiss actions, but can integrate into\ncomposables offering these features. For example, to implement swipe to dismiss\non a card, integrate it with the [`SwipeToDismiss`](/reference/kotlin/androidx/compose/material3/package-summary#SwipeToDismiss(androidx.compose.material3.DismissState,kotlin.Function1,kotlin.Function1,androidx.compose.ui.Modifier,kotlin.collections.Set)) composable. To integrate\nwith scroll, use scroll modifiers such as [`verticalScroll`](/reference/kotlin/androidx/compose/foundation/package-summary#(androidx.compose.ui.Modifier).verticalScroll(androidx.compose.foundation.ScrollState,kotlin.Boolean,androidx.compose.foundation.gestures.FlingBehavior,kotlin.Boolean)). See the [Scroll\ndocumentation](/develop/ui/compose/touch-input/pointer-input/scroll) for more information.\n\nAdditional resources\n\n- [Material UI docs](https://m3.material.io/components/cards/overview)"]]