แม้ว่า Grid config จะกำหนดโครงสร้างโดยรวม คุณก็ใช้ตัวปรับแต่ง gridItem เพื่อควบคุมตำแหน่ง การขยาย และการจัดแนวของรายการภายในโครงสร้างนั้นได้
กำหนดตำแหน่งรายการ
วางไอเทมลงในแทร็กหรือเซลล์ที่เฉพาะเจาะจง
ด้วยพารามิเตอร์ row และ column
พารามิเตอร์ row และ column จะระบุดัชนีแทร็กแถวและคอลัมน์ที่วางรายการ
ดัชนีแทร็กเป็นแบบฐานหนึ่ง ซึ่งเริ่มต้นที่ 1
การระบุ row หรือ column เพียงอย่างเดียว (ไม่ใช่ทั้ง 2 อย่าง) จะวางรายการ
ในพื้นที่ว่างถัดไปในแทร็กนั้น
การระบุทั้ง 2 ที่จะทำให้รายการอยู่ในเซลล์นั้น
ใช้จำนวนเต็มบวกเพื่อระบุดัชนีแทร็กจากจุดเริ่มต้น
เช่น หากต้องการวางรายการในแถวและคอลัมน์แรก
ให้ใช้ gridItem(row = 1, column = 1)
ใช้จำนวนเต็มลบเพื่อระบุแทร็กที่สัมพันธ์กับตอนท้าย
เช่น หากต้องการวางรายการในแถวและคอลัมน์ที่ 2 จากท้าย ให้ใช้
gridItem(row = -2, column = -2)
ในตัวอย่างต่อไปนี้ การ์ด #2 จะอยู่ในแถวที่ 2 และคอลัมน์ที่ 2 การ์ด #3 จะกำหนดให้กับแถวสุดท้าย (จัดทำดัชนีโดย -1) ซึ่งจะใช้คอลัมน์แรกที่ว่างในแทร็กนั้นโดยอัตโนมัติ (รูปที่ 1)
Grid( config = { repeat(2) { column(160.dp) } repeat(3) { row(90.dp) } gap(8.dp) } ) { Card1() Card2(modifier = Modifier.gridItem(row = 2, column = 2)) Card3(modifier = Modifier.gridItem(row = -1, column = -2)) }
ขยายแถวและคอลัมน์
ใช้พารามิเตอร์ rowSpan และ columnSpan
เพื่อขยายรายการไปยังหลายเซลล์
คุณวางองค์ประกอบ UI ลงในพื้นที่กริดได้
ซึ่งเป็นพื้นที่ที่ประกอบด้วยเซลล์กริดหลายเซลล์
ตัวปรับแต่ง gridItem ช่วยให้คุณระบุพื้นที่ตารางกริด
ด้วยพารามิเตอร์ rowSpan และ columnSpan
ในตัวอย่างต่อไปนี้ การ์ด #1 จะอยู่ในพื้นที่ที่มี 2 แถวและ 2 คอลัมน์
(รูปที่ 2)
Grid( config = { repeat(3) { column(160.dp) } repeat(3) { row(90.dp) } rowGap(8.dp) columnGap(8.dp) } ) { Card1(modifier = Modifier.gridItem(rowSpan = 2, columnSpan = 2)) Card2() Card3() Card4(modifier = Modifier.gridItem(columnSpan = 3)) }
ตั้งค่าการจัดแนวในพื้นที่ตารางกริด
คุณตั้งค่าการจัดแนวขององค์ประกอบ UI ในพื้นที่ตารางกริดได้
โดยระบุในการalignmentพารามิเตอร์ของตัวปรับแต่ง gridItem
ในตัวอย่างต่อไปนี้ #1 จะวางอยู่ตรงกลางพื้นที่ตารางกริด
ซึ่งประกอบด้วย 2 คอลัมน์และ 2 แถว
Grid( config = { repeat(3) { column(160.dp) } repeat(3) { row(90.dp) } rowGap(8.dp) columnGap(8.dp) }, ) { Text( text = "#1", modifier = Modifier .gridItem( rowSpan = 2, columnSpan = 2, alignment = Alignment.Center ), ) Card2() Card3() Card4(modifier = Modifier.gridItem(columnSpan = 3)) }
การวางอัตโนมัติผสมกับรายการที่วาง
องค์ประกอบ UI ใน Grid
ที่ไม่มีการระบุตำแหน่งจะได้รับการจัดวางอัตโนมัติ
ตัวอย่างนี้แสดงวิธีผสมองค์ประกอบที่วางอัตโนมัติ
และองค์ประกอบ UI กับเซลล์ตารางกริดที่ระบุ
การ์ด #2 และการ์ด #4 คือเซลล์ตารางกริดที่ระบุ
และรายการอื่นๆ จะวางโดยอัตโนมัติ
Grid( config = { repeat(2) { column(160.dp) } repeat(3) { row(90.dp) } rowGap(16.dp) columnGap(8.dp) } ) { Card1() Card2(modifier = Modifier.gridItem(row = 2, column = 2)) Card3() Card4(modifier = Modifier.gridItem(row = 3, column = 1)) Card5() Card6() }