Card
composable به عنوان یک محفظه طراحی متریال برای رابط کاربری شما عمل می کند. کارت ها معمولاً یک محتوای منسجم را ارائه می دهند. در زیر چند نمونه از مواردی که ممکن است از کارت استفاده کنید آمده است:
- یک محصول در یک اپلیکیشن خرید.
- یک خبر در یک اپلیکیشن خبری.
- یک پیام در یک برنامه ارتباطی
تمرکز روی نمایش یک محتوا است که Card
از سایر کانتینرها متمایز می کند. به عنوان مثال، Scaffold
ساختار کلی را برای یک صفحه نمایش کامل فراهم می کند. کارت معمولاً یک عنصر رابط کاربری کوچکتر در یک طرحبندی بزرگتر است، در حالی که یک مؤلفه طرحبندی مانند Column
یا Row
یک API سادهتر و عمومیتر ارائه میدهد.
پیاده سازی اساسی
Card
بسیار شبیه سایر کانتینرها در Compose عمل می کند. شما محتوای آن را با فراخوانی سایر اجزای سازنده درون آن اعلام می کنید. به عنوان مثال، در نظر بگیرید که چگونه Card
شامل یک تماس به Text
در مثال حداقل زیر است:
@Composable
fun CardMinimalExample() {
Card() {
Text(text = "Hello, world!")
}
}
پیاده سازی های پیشرفته
مرجع تعریف API Card
را ببینید. چندین پارامتر را تعریف می کند که به شما امکان می دهد ظاهر و رفتار جزء را سفارشی کنید.
برخی از پارامترهای کلیدی که باید به آنها توجه داشت به شرح زیر است:
-
elevation
: سایه ای را به مولفه اضافه می کند که باعث می شود آن را در بالای پس زمینه مرتفع نشان دهد. -
colors
: از نوعCardColors
برای تنظیم رنگ پیشفرض ظرف و هر فرزند استفاده میکند. -
enabled
: اگر این پارامتر راfalse
ارسال کنید، کارت غیرفعال شده ظاهر می شود و به ورودی کاربر پاسخ نمی دهد. -
onClick
: معمولاً یکCard
رویدادهای کلیک را نمی پذیرد. به این ترتیب، اضافه بار اولیه ای که می خواهید به آن توجه کنید همان چیزی است که یک پارامترonClick
را تعریف می کند. اگر میخواهید اجرایCard
به فشارهای کاربر پاسخ دهد، باید از این اضافه بار استفاده کنید.
مثال زیر نشان می دهد که چگونه می توانید از این پارامترها و همچنین سایر پارامترهای رایج مانند shape
و modifier
استفاده کنید.
کارت پر شده
در زیر نمونه ای از نحوه پیاده سازی کارت پر شده آورده شده است.
نکته کلیدی در اینجا استفاده از ویژگی colors
برای تغییر رنگ پر شده است.
@Composable fun FilledCardExample() { Card( colors = CardDefaults.cardColors( containerColor = MaterialTheme.colorScheme.surfaceVariant, ), modifier = Modifier .size(width = 240.dp, height = 100.dp) ) { Text( text = "Filled", modifier = Modifier .padding(16.dp), textAlign = TextAlign.Center, ) } }
این پیاده سازی به صورت زیر ظاهر می شود:
کارت مرتفع
قطعه زیر نحوه پیاده سازی کارت elevated را نشان می دهد. از ElevatedCard
اختصاصی composable استفاده کنید.
می توانید از ویژگی elevation
برای کنترل ظاهر elevation و سایه حاصل استفاده کنید.
@Composable fun ElevatedCardExample() { ElevatedCard( elevation = CardDefaults.cardElevation( defaultElevation = 6.dp ), modifier = Modifier .size(width = 240.dp, height = 100.dp) ) { Text( text = "Elevated", modifier = Modifier .padding(16.dp), textAlign = TextAlign.Center, ) } }
این پیاده سازی به صورت زیر ظاهر می شود:
کارت مشخص شده
در زیر نمونه ای از یک کارت مشخص شده است. از OutlinedCard
اختصاصی composable استفاده کنید.
@Composable fun OutlinedCardExample() { OutlinedCard( colors = CardDefaults.cardColors( containerColor = MaterialTheme.colorScheme.surface, ), border = BorderStroke(1.dp, Color.Black), modifier = Modifier .size(width = 240.dp, height = 100.dp) ) { Text( text = "Outlined", modifier = Modifier .padding(16.dp), textAlign = TextAlign.Center, ) } }
این پیاده سازی به صورت زیر ظاهر می شود:
محدودیت ها
کارتها با پیمایش ذاتی یا رد کردن کنشها ارائه نمیشوند، اما میتوانند در ترکیبهایی که این ویژگیها را ارائه میدهند، ادغام شوند. به عنوان مثال، برای پیاده سازی Swipe to dismiss روی کارت، آن را با SwipeToDismiss
composable ادغام کنید. برای ادغام با اسکرول، از اصلاح کننده های اسکرول مانند verticalScroll
استفاده کنید. برای اطلاعات بیشتر به مستندات اسکرول مراجعه کنید.