คอมโพสิเบิล Card
จะทําหน้าที่เป็นคอนเทนเนอร์ Material Design สําหรับ UI
โดยปกติแล้ว การ์ดจะแสดงเนื้อหาที่เชื่อมโยงกันเพียงชิ้นเดียว ตัวอย่างที่อาจใช้การ์ดได้มีดังนี้
- ผลิตภัณฑ์ในแอปช็อปปิ้ง
- เรื่องราวข่าวในแอปข่าว
- ข้อความในแอปการสื่อสาร
คอนเทนเนอร์ประเภทนี้เน้นที่การแสดงเนื้อหาชิ้นเดียวที่แตกต่างจากCard
คอนเทนเนอร์อื่นๆ เช่น Scaffold
ให้โครงสร้างทั่วไปสำหรับทั้งหน้าจอ โดยทั่วไปแล้ว การ์ดเป็นองค์ประกอบ UI ขนาดเล็กภายในเลย์เอาต์ขนาดใหญ่ ส่วนคอมโพเนนต์เลย์เอาต์ เช่น Column
หรือ Row
จะมี API ที่เรียบง่ายและทั่วไปมากกว่า
การติดตั้งใช้งานขั้นพื้นฐาน
Card
ทำงานคล้ายกับคอนเทนเนอร์อื่นๆ ใน Compose คุณประกาศเนื้อหาโดยเรียกใช้
Composable อื่นๆ ที่อยู่ภายใน ตัวอย่างเช่น พิจารณาวิธีที่ Card
มีคำเรียกใช้ Text
ในตัวอย่างขั้นต่ำต่อไปนี้
@Composable
fun CardMinimalExample() {
Card() {
Text(text = "Hello, world!")
}
}
การติดตั้งใช้งานขั้นสูง
ดูคำจำกัดความของ Card
ใน API ได้ที่ข้อมูลอ้างอิง ซึ่งจะกําหนดพารามิเตอร์หลายรายการที่ช่วยให้คุณปรับแต่งลักษณะที่ปรากฏและลักษณะการทํางานของคอมโพเนนต์ได้
พารามิเตอร์หลักที่ควรทราบมีดังนี้
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, ) } }
การติดตั้งใช้งานนี้จะปรากฏดังนี้

การ์ดแบบยกระดับ
ข้อมูลโค้ดต่อไปนี้แสดงวิธีใช้การ์ดที่ยกระดับ ใช้คอมโพสิเบิล 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, ) } }
การติดตั้งใช้งานนี้จะปรากฏดังนี้

ข้อจำกัด
การ์ดไม่ได้มาพร้อมกับการเลื่อนหรือการดำเนินการปิด แต่สามารถผสานรวมเข้ากับคอมโพสิชันที่เสนอฟีเจอร์เหล่านี้ได้ เช่น หากต้องการใช้การปัดเพื่อปิดการ์ด ให้ผสานรวมการ์ดดังกล่าวกับ Composable SwipeToDismiss
หากต้องการผสานรวมกับการเลื่อน ให้ใช้ตัวปรับการเลื่อน เช่น verticalScroll
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Scroll