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

تجربة طريقة Compose
‫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 الذي يضم المحتوى.
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();