إنشاء رسالة منبثقة وعرضها

تجربة طريقة الإنشاء
Jetpack Compose هي مجموعة أدوات واجهة المستخدم المقترَحة لنظام التشغيل Android. تعرّف على كيفية إضافة إشعارات في Compose.

يمكنك استخدام 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

أنشئ كائن Snackbar من خلال استدعاء الطريقة Snackbar.make() الثابتة. عند إنشاء علامة Snackbar، حدِّد الرسالة التي يتم عرضها والمدة الزمنية لعرض الرسالة:

Kotlin

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

Java

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
عرض
العرض المطلوب إرفاق Snackbar به. تبحث هذه الطريقة في التسلسل الهرمي لطريقة العرض من طريقة العرض التي تم تمريرها إلى أن تصل إلى CoordinatorLayout أو عرض المحتوى الخاص بديكور النافذة. في العادة، من الأسهل تمرير علامة CoordinatorLayout التي تتضمّن المحتوى.
معرِّف السلسلة
رقم تعريف مورد الرسالة التي تريد عرضها. ويمكن أن يكون هذا النص بتنسيق أو غير منسّقة.
المدة
المدة الزمنية لعرض الرسالة. يمكن أن يكون النوع 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();