หากต้องการกำหนดค่าลักษณะการทำงานของคอนเทนเนอร์ FlexBox ให้สร้างFlexBoxConfig
บล็อก แล้วระบุโดยใช้พารามิเตอร์ config
FlexBox( config = { direction(FlexDirection.Column) wrap(FlexWrap.Wrap) alignItems(FlexAlignItems.Center) alignContent(FlexAlignContent.SpaceAround) justifyContent(FlexJustifyContent.Center) gap(16.dp) } ) { // child items }
ใช้ FlexBoxConfig เพื่อกำหนดทิศทางการจัดวาง ลักษณะการทำงานของการตัดคำ การจัดแนว และช่องว่างระหว่างรายการ
ทิศทางการจัดวาง
ฟังก์ชัน direction จะกำหนดแกนหลัก ซึ่งกำหนดทิศทางที่รายการจะจัดวาง โดยค่าที่ใช้ได้มีดังนี้
Row(ค่าเริ่มต้น): กำหนดให้แกนหลักเป็นแนวนอน ในภาษาที่อ่านจากซ้ายไปขวา รายการจะจัดวางจากซ้ายไปขวา ส่วนในภาษาที่อ่านจากขวาไปซ้าย รายการจะจัดวางจากขวาไปซ้ายRowReverse: กลับทิศทางของRowColumn: กำหนดให้แกนหลักเป็นแนวตั้ง จากบนลงล่างColumnReverse: กลับทิศทางของColumn
จัดแนวรายการและกระจายพื้นที่ว่างเพิ่มเติม
ส่วนต่อไปนี้อธิบายวิธีจัดแนวรายการและกระจายพื้นที่ว่างเพิ่มเติมตามแกนหลักและแกนไขว้
ตามแกนหลัก
ใช้ justifyContent เพื่อกระจายรายการตามแกนหลัก ตารางต่อไปนี้แสดงลักษณะการทำงานเมื่อทิศทางเป็น Row
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตามแกนไขว้
ใช้ alignItems เพื่อจัดแนวรายการตามแกนไขว้ภายในบรรทัดเดียว รายการแต่ละรายการสามารถลบล้างลักษณะการทำงานนี้ได้โดยใช้ตัวปรับเปลี่ยน
alignSelf
รูปภาพต่อไปนี้แสดงลักษณะการทำงานเมื่อทิศทางเป็น Row
|
|
|
|
|
|
|
|
|
|
|
ใช้ alignContent เพื่อจัดแนวบรรทัดกับแกนไขว้และกระจายพื้นที่ว่างเพิ่มเติมระหว่างบรรทัด พร็อพเพอร์ตี้นี้จะใช้ได้ก็ต่อเมื่อมีหลายบรรทัด (เปิดใช้การตัดคำ) รูปภาพต่อไปนี้แสดงลักษณะการทำงานเมื่อทิศทางเป็น Row
|
|
|
|
|
|
|
|
|
|
|
|
|
รวมรายการ
การตัดคำช่วยให้คอนเทนเนอร์ FlexBox กลายเป็นแบบหลายบรรทัด โดยย้ายรายการที่ไม่พอดีไปยังแถวหรือคอลัมน์ใหม่ตามแกนไขว้ กำหนดค่าลักษณะการทำงานของการตัดคำโดยใช้ wrap
ค่า |
ตัวอย่างโดยใช้ทิศทาง |
|
|
|
|
|
|
ตัวอย่างต่อไปนี้แสดงวิธีการทำงานของอัลกอริทึมการตัดคำของ FlexBox คอนเทนเนอร์ FlexBox มีขนาดหลักเป็น 100dp โดยตั้งค่า wrap เป็น FlexWrap.Wrap และมีช่องว่าง 8dp โดยมีรายการ 3 รายการที่มี basis เป็น 20dp, 40dp และ 50dp ตามลำดับ
มีพื้นที่ว่าง 100dp ในบรรทัด รายการย่อย 1 มีขนาด 20dp
มีพื้นที่ว่าง รายการย่อย 1 จึงถูกวางไว้ในบรรทัด
FlexBoxมีพื้นที่ว่าง 80dp ในบรรทัด ช่องว่างมีขนาด 8dp รายการย่อย 2 มีขนาด 40dp พื้นที่ที่ต้องใช้คือ 48dp มีพื้นที่ว่าง ช่องว่างและรายการย่อย 2 จึงถูกวางไว้ในบรรทัด
FlexBox หลังจากรายการแรกมีพื้นที่ว่าง 32dp ในบรรทัด ช่องว่างมีขนาด 8dp รายการย่อย 3 มีขนาด 50dp พื้นที่ที่ต้องใช้คือ 58dp มีพื้นที่ว่างไม่เพียงพอในบรรทัดปัจจุบัน รายการย่อย 3 จึงถูกวางไว้ในบรรทัดใหม่
เพิ่มช่องว่างระหว่างรายการ
เพิ่มช่องว่างระหว่างแถวและคอลัมน์โดยใช้ rowGap และ columnGap ซึ่งจะเป็นประโยชน์ในการหลีกเลี่ยงการเพิ่มตัวปรับเปลี่ยนการเว้นระยะห่างให้กับรายการย่อย
|
|
|
เพิ่มพื้นที่แนวตั้งระหว่างรายการและบรรทัด |
เพิ่มพื้นที่แนวนอนระหว่างรายการและบรรทัด |
|