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

כדאי לנסות את הדרך של Compose
‫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, כמו בדוגמה הבאה:

<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myCoordinatorLayout"
    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>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

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

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

הצגת הודעה

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

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

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

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

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

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

mySnackbar.show()

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

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

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