רכיב ה-Composable Card
פועל כקונטיינר של Material Design לממשק המשתמש.
בדרך כלל, כל כרטיס מציג פריט תוכן אחד קוהרנטי. הנה כמה דוגמאות למקומות שבהם אפשר להשתמש בכרטיס:
- מוצר באפליקציית שופינג.
- כתבה חדשותית באפליקציית חדשות.
- הודעה באפליקציית תקשורת.
ההתמקדות בהצגת פריט תוכן יחיד היא מה שמבדיל בין Card
לבין מאגרי תוכן אחרים. לדוגמה, Scaffold
מספק מבנה כללי למסך שלם. כרטיס הוא בדרך כלל רכיב קטן יותר בממשק המשתמש בתוך פריסה גדולה יותר, בעוד שרכיב פריסה כמו Column
או Row
מספק API פשוט וכללי יותר.
הטמעה בסיסית
Card
מתנהג בדומה למאגרים אחרים במצב כתיבה. מצהירים על התוכן שלו על ידי קריאה לרכיבים אחרים שניתנים להרכבה בתוכו. לדוגמה, בדוגמה המינימלית הבאה, הפונקציה 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, ) } }
ההטמעה הזו נראית כך:

כרטיס מוגבה
בקטע הקוד הבא מוצגת דוגמה להטמעה של כרטיס מוגבה. משתמשים ב-composable הייעודי ElevatedCard
.
אפשר להשתמש במאפיין 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 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, ) } }
ההטמעה הזו נראית כך:

מגבלות
לכרטיסים אין פעולות גלילה או סגירה מובנות, אבל אפשר לשלב אותם עם קומפוזיציות שמציעות את התכונות האלה. לדוגמה, כדי להטמיע החלקה לסגירה בכרטיס, משלבים אותו עם הקומפוזיציה SwipeToDismiss
. כדי לשלב עם גלילה, משתמשים בשינויים של גלילה כמו verticalScroll
. מידע נוסף זמין במסמכי התיעוד של Scroll.