כדי להגדיר את ההתנהגות של קונטיינר 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 מקומות פנויים בתור. ילד/ה 1 הוא/היא 20dp.
יש מקום, אז ילד 1 מתווסף לתור.
FlexBox.יש 80dp מקומות פנויים בתור. הפער הוא 8dp. ילד 2 הוא
40dp. השטח הנדרש הוא 48dp. יש מקום, ולכן הפער והילד 2 ממוקמים בשורה.
FlexBox אחרי הפריט הראשון.יש 32dp מקומות פנויים בתור. הפער הוא 8dp. הילד/ה מספר 3 הוא/היא 50dp. השטח הנדרש הוא 58dp. אין מספיק מקום בשורה הנוכחית, ולכן Child 3 ממוקם בשורה חדשה.
הוספת רווחים בין פריטים
כדי להוסיף רווחים בין שורות ועמודות, משתמשים ב-rowGap וב-columnGap. השיטה הזו שימושית כדי להימנע מהוספת משנים של ריווח לילדים.
|
|
|
מוסיף רווח אנכי בין פריטים ושורות. |
מוסיף רווח אופקי בין פריטים ושורות. |
|