หากต้องการกำหนดค่าลักษณะการทำงานของคอนเทนเนอร์ 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 เพื่อจัดแนวบรรทัดกับแกนไขว้และกระจาย
ช่องว่างเพิ่มเติมระหว่างบรรทัด พร็อพเพอร์ตี้นี้จะมีผลก็ต่อเมื่อมีหลายบรรทัด
(เปิดใช้การตัดคำ) รูปภาพต่อไปนี้แสดงลักษณะการทำงานเมื่อ direction
เป็น 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 ซึ่งมีประโยชน์
ในการหลีกเลี่ยงการเพิ่มตัวแก้ไขระยะห่างให้กับองค์ประกอบย่อย
|
|
|
เพิ่มพื้นที่แนวตั้งระหว่างรายการและบรรทัด |
เพิ่มพื้นที่แนวนอนระหว่างรายการและบรรทัด |
|