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