لضبط سلوك حاوية 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: لعكس اتجاهRow. -
Column: لضبط المحور الرئيسي ليكون عموديًا، من الأعلى إلى الأسفل. -
ColumnReverse: لعكس اتجاهColumn.
محاذاة العناصر وتوزيع المساحة الإضافية
توضّح الأقسام التالية كيفية محاذاة العناصر وتوزيع المساحة الإضافية على طول المحورَين الرئيسي والمتقاطع.
على طول المحور الرئيسي
استخدِم justifyContent لتوزيع العناصر على طول المحور الرئيسي. يوضّح الجدول التالي السلوك عندما يكون الاتجاه Row.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
على طول المحور المتقاطع
استخدِم alignItems لمحاذاة العناصر على طول المحور المتقاطع ضمن سطر واحد. يمكن إلغاء هذا السلوك في عناصر فردية باستخدام المعدِّل alignSelf.
تعرض الصور التالية السلوك عندما يكون الاتجاه Row:
|
|
|
|
|
|
|
|
|
|
|
استخدِم alignContent لمحاذاة الأسطر مع المحور المتقاطع وتوزيع المساحة الإضافية بين الأسطر. لا تنطبق هذه السمة إلا في حال وجود أسطر متعددة
(عند تفعيل ميزة التفاف النص). تعرض الصور التالية السلوك عندما يكون الاتجاه
هو Row:
|
|
|
|
|
|
|
|
|
|
|
|
|
تضمين العناصر
يتيح الالتفاف لحاوية FlexBox أن تصبح متعددة الأسطر، ما يؤدي إلى نقل العناصر التي لا تتسع في صف أو عمود جديد على طول المحور المتقاطع. يمكنك ضبط سلوك التفاف النص
باستخدام wrap.
قيمة |
مثال على استخدام الاتجاه |
|
|
|
|
|
|
يوضّح المثال التالي كيفية عمل خوارزمية التفاف FlexBox. يبلغ الحجم الرئيسي لحاوية FlexBox 100dp، مع ضبط wrap على FlexWrap.Wrap وفجوة تبلغ 8dp. وتحتوي على ثلاثة عناصر مع basis 20dp و40dp و50dp على التوالي.
تتوفّر مساحة 100dp في السطر. الطفل الأول هو 20dp.
هناك مساحة، لذا يتم وضع الطفل 1 في الصف.
FlexBoxتتوفّر مساحة 80dp في السطر. الفجوة هي 8dp. الطفل الثاني هو
40dp. المساحة المطلوبة هي 48dp. هناك مساحة، لذلك يتم وضع الفجوة
والعنصر الفرعي 2 في السطر.
FlexBox بعد العنصر الأولتتوفّر مساحة 32dp في السطر. الفجوة هي 8dp. يبلغ عمر الطفل الثالث
50dp. المساحة المطلوبة هي 58dp. لا توجد مساحة كافية في السطر الحالي،
لذلك يتم وضع الطفل 3 في سطر جديد.
إضافة فواصل بين العناصر
أضِف فجوات بين الصفوف والأعمدة باستخدام rowGap وcolumnGap. هذا مفيد لتجنب إضافة
معدّلات التباعد إلى العناصر الفرعية.
|
|
|
تضيف مسافة عمودية بين العناصر والخطوط. |
يضيف مسافة أفقية بين العناصر والخطوط. |
|