แม้ว่าการกำหนดค่า Grid จะกำหนดโครงสร้างโดยรวม แต่คุณจะใช้ตัวแก้ไข gridItem เพื่อควบคุมตำแหน่ง การขยาย และการจัดแนวของรายการภายในโครงสร้างนั้น
กำหนดตำแหน่งของรายการ
วางรายการลงในแทร็กหรือเซลล์ที่เฉพาะเจาะจงด้วยพารามิเตอร์ row และ column
ดัชนีพิกัดจะทำงานได้ดีที่สุดกับเลย์เอาต์ตารางกริดที่ตรงไปตรงมา
สำหรับเลย์เอาต์ที่ใหญ่หรือซับซ้อนกว่า ให้กำหนดพื้นที่ที่มีชื่อแทน
พารามิเตอร์ row และ column จะระบุดัชนีแทร็กแถวและคอลัมน์ที่วางรายการไว้
ดัชนีแทร็กจะอิงตาม 1 โดยเริ่มที่ 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() }