หากต้องการกำหนดค่าลักษณะการทำงานของคอนเทนเนอร์ 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 มีช่องว่าง ดังนั้นระบบจึงวางช่องว่างและ Child 2
ไว้ในบรรทัด
FlexBox หลังจากรายการแรกมีพื้นที่ว่างในบรรทัด 32dp ช่องว่างคือ 8dp บุตรหลานคนที่ 3 มีอายุ
50dp พื้นที่ที่ต้องใช้คือ 58dp บรรทัดปัจจุบันมีพื้นที่ไม่เพียงพอ
จึงวาง Child 3 ในบรรทัดใหม่
เพิ่มช่องว่างระหว่างรายการ
เพิ่มช่องว่างระหว่างแถวและคอลัมน์โดยใช้ rowGap และ columnGap ซึ่งมีประโยชน์
ในการหลีกเลี่ยงการเพิ่มตัวแก้ไขระยะห่างให้กับองค์ประกอบย่อย
|
|
|
เพิ่มพื้นที่แนวตั้งระหว่างรายการและบรรทัด |
เพิ่มพื้นที่แนวนอนระหว่างรายการและบรรทัด |
|