یک پیام پاپ آپ بسازید و نمایش دهید

روش Compose را امتحان کنید
Jetpack Compose جعبه ابزار UI توصیه شده برای اندروید است. با نحوه افزودن اعلان در 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 وقتی Snackbar ظاهر شد FloatingActionButton به سمت بالا حرکت می دهد.

نمایش یک پیام

برای نمایش یک پیام دو مرحله وجود دارد. ابتدا یک شیء Snackbar با متن پیام ایجاد می کنید. سپس، متد show() آن شی را فراخوانی می کنید تا پیام را به کاربر نمایش دهید.

یک شی Snackbar ایجاد کنید

با فراخوانی متد Snackbar.make() استاتیک یک شی Snackbar ایجاد کنید. هنگامی که Snackbar ایجاد می کنید، پیامی را که نمایش می دهد و مدت زمان نمایش پیام را مشخص کنید:

کاتلین

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

جاوا

Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
مشاهده کنید
نمای برای اتصال Snackbar به. این روش سلسله مراتب view را از نمای عبوری جستجو می کند تا زمانی که به CoordinatorLayout یا نمای محتوای دکور پنجره برسد. به طور معمول، عبور از CoordinatorLayout که محتوای شما را در بر می گیرد، ساده تر است.
stringId
شناسه منبع پیامی که می خواهید نمایش دهید. این می تواند متن فرمت شده یا بدون قالب باشد.
مدت
مدت زمان نمایش پیام این می تواند LENGTH_SHORT یا LENGTH_LONG باشد.

نمایش پیام به کاربر

پس از ایجاد Snackbar ، متد show() آن را فراخوانی کنید تا Snackbar به کاربر نمایش داده شود:

کاتلین

mySnackbar.show()

جاوا

mySnackbar.show();

سیستم چندین شیء Snackbar به طور همزمان نشان نمی‌دهد، بنابراین اگر نمای در حال حاضر Snackbar دیگر را نشان می‌دهد، سیستم Snackbar شما را در صف قرار می‌دهد و پس از انقضای Snackbar فعلی یا حذف آن، آن را نمایش می‌دهد.

اگر می‌خواهید پیامی را به کاربر نشان دهید و نیازی به فراخوانی هیچ یک از متدهای کاربردی شی Snackbar ندارید، پس از فراخوانی show() نیازی به حفظ ارجاع به Snackbar ندارید. به همین دلیل، استفاده از روش زنجیره‌ای برای ایجاد و نمایش یک Snackbar در یک عبارت معمول است:

کاتلین

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

جاوا

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