Jetpack Compose מספק כמה קונטיינרים של פריסות שעוזרים לכם לבנות ולסדר את רכיבי ממשק המשתמש. רכיבי פריסה בסיסיים כמו Row ו-Column מטפלים בסידורים פשוטים, אבל אפליקציות רבות דורשות פתרונות גמישים יותר למאגרים, שמתאימים את עצמם לשינויים בגודל המסך ולגידול בנתוני המשתמשים.
אלה מאגרי הפריסה:
- רשימות ורשתות עם טעינה מדורגת: רכיבים כמו
LazyColumn, LazyRowו-LazyVerticalGridשמציגים ביעילות קבוצות נתונים גדולות או בגודל דינמי, על ידי יצירה ופריסה של פריטים שגלויים כרגע באזור התצוגה. - כלי לדפדוף: קונטיינרים כמו
HorizontalPagerו-VerticalPagerשמאפשרים למשתמשים להחליק או לגלול בין דפי תוכן. - פריסות זרימה: קונטיינרים רספונסיביים חד-ממדיים (
FlowRowו-FlowColumn) שמעבירים באופן אוטומטי פריטים חורגים לשורה או לעמודה הבאה כשנגמר המקום. - רשת: מבנה גמיש ודו-ממדי שמציג פריטים בפריסות של כמה עמודות או כמה שורות, שמתאימות את עצמן לגודל של מאגר התגים.
- FlexBox: מאגר גמיש בהשראת CSS Flexbox, שמאפשר שליטה פרטנית על האופן שבו פריטים מתעטפים, גדלים, מתכווצים ומתיישרים לאורך הצירים הראשיים והצולבים כדי למלא את המקום הפנוי.
בחירת מאגר הפריסה הנכון
כשיוצרים פריסות ב-Compose, הבחירה בין מאגרי פריסות בסיסיים למתקדמים יותר תלויה בעיצוב, בשאלה אם הפריטים צריכים לעבור לשורה הבאה כשהמקום מוגבל, ובאופן שבו הגודל של הפריטים משתנה באופן דינמי.
בטבלה הבאה מפורטות היכולות של כל אחד ממכלי הפריסה החד-ממדיים ב-Compose:
מאגר |
העברת פריטים לשורות חדשות |
הגדלה לפי פריט |
התכווצות לפי פריט |
גודל התחלתי לכל פריט |
הפריטים גדלים כדי למלא את השטח הזמין בכמה שורות |
שינוי הסדר של הפריטים |
טעינה מדורגת |
מתאים במיוחד ל: |
שורה / עמודה |
❌ |
✅ (דרך |
❌ |
❌ |
❌ |
❌ |
❌ |
|
FlowRow / FlowColumn |
✅ |
מוגבלת |
❌ |
❌ |
חלקי |
❌ |
❌ |
|
LazyRow / LazyColumn |
❌ |
❌ |
❌ |
❌ |
❌ |
❌ |
✅ |
|
FlexBox |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
|
בטבלה הבאה מפורטות היכולות של Grid ושל רכיבים דומים אחרים:
מאגר |
התאמה קפדנית בדו-ממד |
פריסה של פריט (עמודות) |
פריסה של פריט (שורות) |
טעינה מדורגת |
מתאים במיוחד ל: |
רשת |
✅ |
✅ (באמצעות |
✅ |
❌ |
|
LazyVerticalGrid |
✅ |
✅ (באמצעות |
❌ |
✅ |
|
LazyStaggeredGrid |
❌ (רק ב-1D) |
חלקית (רק בפריסה מלאה) |
❌ |
✅ |
|
LazyHorizontalGrid |
✅ |
❌ |
✅ |
✅ |
|
שילוב של שורות ועמודות |
❌ |
❌ |
❌ |
❌ |
|