יצירה והצגה של הודעה קופצת

כדאי לנסות את התכונה 'כתיבה מהירה'
Jetpack Compose היא ערכת הכלים המומלצת לבניית ממשק משתמש ב-Android. איך מוסיפים התראות בחלונית הכתיבה

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

שימוש ב-CoordinatorLayout

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

  • המשתמש יכול לסגור את Snackbar על ידי החלקה.
  • כשהסמל Snackbar מופיע, רכיבים אחרים בממשק המשתמש נעים בפריסה. לדוגמה, אם בפריסה יש FloatingActionButton, המערכת תזיז את הלחצן למעלה כשהיא מציגה Snackbar, במקום לצייר את ה-Snackbar מעל הלחצן. אפשר לראות איך זה נראה באיור 1.

הכיתה CoordinatorLayout מספקת קבוצה גדולה יותר של פונקציונליות מאשר FrameLayout. אם באפליקציה שלכם כבר נעשה שימוש ב-FrameLayout, תוכלו להחליף את הפריסה הזו ב-CoordinatorLayout כדי להפעיל את הפונקציונליות המלאה של Snackbar. אם באפליקציה שלכם נעשה שימוש באובייקטים אחרים של פריסה, צריך לעטוף את רכיבי הפריסה הקיימים ב-CoordinatorLayout, כפי שמוצג בדוגמה הבאה:

<android.support.design.widget.CoordinatorLayout
    android:id="@+id/myCoordinatorLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Here are the existing layout elements, now wrapped in
         a CoordinatorLayout. -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <!-- ...Toolbar, other layouts, other elements... -->

    </LinearLayout>

</android.support.design.widget.CoordinatorLayout>

מגדירים תג android:id ל-CoordinatorLayout. צריך את המזהה של הפריסה כשמציגים את ההודעה.

איור 1. ה-CoordinatorLayout מזיז את ה-FloatingActionButton למעלה כשה-Snackbar מופיע.

הצגת הודעה

יש שני שלבים להצגת הודעה. קודם יוצרים אובייקט Snackbar עם טקסט ההודעה. לאחר מכן, קוראים לשיטה show() של האובייקט כדי להציג את ההודעה למשתמש.

יצירת אובייקט של סרגל סטטוסים

יוצרים אובייקט Snackbar על ידי קריאה ל-method הסטטי Snackbar.make(). כשיוצרים את Snackbar, מציינים את ההודעה שמוצגת ואת משך הזמן שבו היא תוצג:

Kotlin

val mySnackbar = Snackbar.make(view, stringId, duration)

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
צפייה
האפשרות שבה רוצים לצרף את Snackbar. השיטה מחפשת למעלה במורד היררכיית התצוגות מהתצוגה שהועברה עד שמגיעה ל-CoordinatorLayout או לתצוגת התוכן של חלון העיצוב. בדרך כלל קל יותר להעביר את ה-CoordinatorLayout שמקיף את התוכן.
stringId
מזהה המשאב של ההודעה שרוצים להציג. הטקסט יכול להיות בפורמט או ללא פורמט.
משך
משך הזמן שבו ההודעה תוצג. הערך יכול להיות LENGTH_SHORT או LENGTH_LONG.

הצגת ההודעה למשתמש

אחרי שיוצרים את ה-Snackbar, צריך לקרוא לשיטה show() שלו כדי להציג את ה-Snackbar למשתמש:

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

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

אם רוצים להציג הודעה למשתמש ולא צריך להפעיל אף אחת מהשיטות של אובייקט Snackbar, אין צורך לשמור את ההפניה ל-Snackbar אחרי שמפעילים את show(). לכן, מקובל להשתמש בשרשרת שיטות כדי ליצור ולהציג Snackbar בהצהרה אחת:

Kotlin

Snackbar.make(
        findViewById(R.id.myCoordinatorLayout),
        R.string.email_sent,
        Snackbar.LENGTH_SHORT
).show()

Java

Snackbar.make(findViewById(R.id.myCoordinatorLayout), R.string.email_sent,
                        Snackbar.LENGTH_SHORT)
        .show();