คอมโพสิเบิล Card
จะทําหน้าที่เป็นคอนเทนเนอร์ Material Design สําหรับ UI
โดยปกติแล้ว การ์ดจะแสดงเนื้อหาที่เชื่อมโยงกันเพียงชิ้นเดียว ตัวอย่างที่อาจใช้การ์ดได้มีดังนี้
- ผลิตภัณฑ์ในแอปช็อปปิ้ง
- เรื่องราวข่าวในแอปข่าว
- ข้อความในแอปการสื่อสาร
คอนเทนเนอร์ประเภทนี้เน้นที่การแสดงเนื้อหาชิ้นเดียวที่แตกต่างจากCard
คอนเทนเนอร์อื่นๆ เช่น Scaffold
ให้โครงสร้างทั่วไปสำหรับทั้งหน้าจอ โดยทั่วไปแล้ว การ์ดเป็นองค์ประกอบ UI ขนาดเล็กภายในเลย์เอาต์ขนาดใหญ่ ส่วนคอมโพเนนต์เลย์เอาต์ เช่น Column
หรือ Row
จะมี API ที่เรียบง่ายและทั่วไปมากกว่า
การติดตั้งใช้งานขั้นพื้นฐาน
Card
ทำงานคล้ายกับคอนเทนเนอร์อื่นๆ ใน Compose คุณประกาศเนื้อหาของคอมโพสิเบิลได้โดยเรียกใช้คอมโพสิเบิลอื่นๆ ภายใน ตัวอย่างเช่น พิจารณาวิธีที่ 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, ) } }
การติดตั้งใช้งานนี้จะปรากฏดังนี้
ข้อจำกัด
การ์ดไม่ได้มาพร้อมกับการเลื่อนหรือการดำเนินการปิด แต่สามารถผสานรวมเข้ากับคอมโพสิเบิลที่เสนอฟีเจอร์เหล่านี้ได้ เช่น หากต้องการใช้การปัดเพื่อปิดในการ์ด ให้ผสานรวมกับคอมโพสิเบิล SwipeToDismiss
หากต้องการผสานรวมกับการเลื่อน ให้ใช้ตัวแก้ไขการเลื่อน เช่น verticalScroll
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบของ Scroll