קרוסלה

קרוסלה מציגה רשימה של פריטים שאפשר לגלול ביניהם, והיא מותאמת באופן דינמי לגודל החלון. אפשר להשתמש בקרוסלות כדי להציג אוסף של תכנים קשורים. פריטים בקרוסלה מדגישים את הרכיבים הוויזואליים, אבל יכולים לכלול גם טקסט קצר שמותאם לגודל הפריט.

יש ארבע פריסות של קרוסלה שמתאימות לתרחישי שימוש שונים:

  • קנייה בכמה מידות: כולל פריטים במידות שונות. מומלץ כשרוצים לעיין בהרבה פריטים בבת אחת, כמו תמונות.
  • Uncontained (לא מוכל): מכיל פריטים בגודל אחד שגולשים מעבר לקצה המסך. אפשר להתאים אישית את התצוגה כדי להציג יותר טקסט או רכיבי ממשק משתמש אחרים מעל כל פריט או מתחתיו.
  • תמונה ראשית: תמונה גדולה אחת שמוצגת במרכז, ופריט קטן שמאפשר לראות מה יהיה בהמשך. מומלץ להשתמש בפורמט הזה כדי להבליט תוכן שרוצים להדגיש, כמו תמונות ממוזערות של סרטים או תוכניות.
  • מסך מלא: מוצג פריט גדול אחד מקצה לקצה בכל פעם, והגלילה היא אנכית. מומלץ לתוכן שהוא גבוה יותר מאשר רחב.
קרוסלה מסוג לא מוגבל ומסך מלא שמוצגת לצד קרוסלה מסוג לא מוגבל ומסך מלא. הקרוסלה הלא מוגבלת מכילה כמה פריטים, בעוד שהקרוסלה במסך מלא מכילה פריט אחד שתופס את כל המסך
איור 1. סוגי קרוסלה לא מוגבלים (1) ומסך מלא (2).

בדף הזה מוסבר איך להטמיע את פריסות הקרוסלה של multi-browse ו-uncontained. מידע נוסף על סוגי הפריסות מופיע בהנחיות לשימוש בקרוסלה ב-Material 3.

פלטפורמת ה-API

כדי להטמיע קרוסלות עם כמה פריטים וקרוסלות לא מוגבלות, משתמשים בקומפוזיציות HorizontalMultiBrowseCarousel ו-HorizontalUncontainedCarousel. לרכיבים הניתנים להרכבה האלה יש את אותם פרמטרים מרכזיים:

  • state: מופע CarouselState שמנהל את האינדקס של הפריט הנוכחי ואת מיקום הגלילה. יוצרים את המצב הזה באמצעות rememberCarouselState { itemCount }, כאשר itemCount הוא המספר הכולל של הפריטים בקרוסלה.
  • itemSpacing: מגדיר את כמות השטח הריק בין פריטים סמוכים בקרוסלה.
  • contentPadding: מוסיף ריווח מסביב לאזור התוכן של הקרוסלה. אפשר להשתמש בזה כדי להוסיף רווח לפני הפריט הראשון או אחרי הפריט האחרון, או כדי להגדיר שוליים לפריטים באזור שאפשר לגלול בו.
  • content: פונקציה הניתנת להגדרה שמקבלת אינדקס של מספר שלם. משתמשים בפונקציית ה-lambda הזו כדי להגדיר את ממשק המשתמש של כל פריט בקרוסלה על סמך האינדקס שלו.

הפונקציות האלה שונות זו מזו באופן שבו הן מציינות את גודל הפריט:

  • itemWidth (עבור HorizontalUncontainedCarousel): מציין את הרוחב המדויק של כל פריט בקרוסלה לא מוגבלת.
  • preferredItemWidth (בשביל HorizontalMultiBrowseCarousel): מציע את הרוחב האידיאלי לפריטים בקרוסלה עם כמה פריטים, ומאפשר לרכיב להציג כמה פריטים אם יש מספיק מקום.

דוגמה: קרוסלה עם כמה מוצרים

בקטע הקוד הזה מוטמעת קרוסלה עם כמה מוצרים:

מידע חשוב על הקוד

  • המאפיין מגדיר מחלקה של נתונים CarouselItem, שמבנה את הנתונים של כל רכיב בקרוסלה.
  • יצירה ושמירה של List של CarouselItem אובייקטים שמאוכלסים במשאבי תמונות ובתיאורים.
  • משתמשים ברכיב הקומפוזבילי HorizontalMultiBrowseCarousel, שמיועד להצגת כמה פריטים בקרוסלה.
    • המצב של הקרוסלה מאותחל באמצעות rememberCarouselState, שמקבל את המספר הכולל של הפריטים.
    • לפריטים יש מאפיין preferredItemWidth (כאן, 186.dp), שמציין רוחב אופטימלי לכל פריט. הקרוסלה משתמשת בערך הזה כדי לקבוע כמה פריטים יכולים להיכנס למסך בו-זמנית.
    • הפרמטר itemSpacing מוסיף רווח קטן בין הפריטים.
    • ה-lambda האחרון של HorizontalMultiBrowseCarousel חוזר על עצמו ב-CarouselItems. בכל איטרציה, הפונקציה מאחזרת את הפריט באינדקס i ומציגה את הרכיב Image.
    • Modifier.maskClip(MaterialTheme.shapes.extraLarge) מחיל מסכת צורה מוגדרת מראש על כל תמונה, ויוצר פינות מעוגלות.
    • contentDescription מספק תיאור נגישות לתמונה.

התוצאה

בתמונה הבאה מוצגת התוצאה של קטע הקוד הקודם:

קרוסלה עם כמה תמונות, שבה מוצגות שתי תמונות באופן מלא ותמונה אחת שחלק ממנה לא מוצג.
איור 2. קרוסלה עם כמה פריטים, כשהפריט האחרון חתוך.

דוגמה: קרוסלה לא מוגבלת

קטע הקוד הבא מטמיע קרוסלה לא מוגבלת:

מידע חשוב על הקוד

  • רכיב ה-HorizontalUncontainedCarousel יוצר את פריסת הקרוסלה.
    • הפרמטר itemWidth מגדיר רוחב קבוע לכל פריט בקרוסלה.

התוצאה

בתמונה הבאה מוצגת התוצאה של קטע הקוד הקודם:

קרוסלה לא מוגבלת עם 3 פריטים. הפריט האחרון גלוי באופן חלקי, אבל לא נחתך.
איור 3. קרוסלה לא מוגבלת, שבה הפריט האחרון בקרוסלה לא נחתך.