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

تجربة طريقة ComposeAllowed
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();