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

روش نوشتن را امتحان کنید
Jetpack Compose ابزار رابط کاربری پیشنهادی برای اندروید است. یاد بگیرید که چگونه اعلان‌ها را در Compose اضافه کنید.

شما می‌توانید از یک Snackbar برای نمایش یک پیام کوتاه به کاربر استفاده کنید. برخلاف اعلان‌ها ، این پیام پس از مدت کوتاهی به طور خودکار ناپدید می‌شود. Snackbar برای پیام‌های کوتاهی که کاربر نیازی به انجام کاری روی آنها ندارد، ایده‌آل است. به عنوان مثال، یک برنامه ایمیل می‌تواند از یک Snackbar برای اطلاع دادن به کاربر که برنامه با موفقیت یک ایمیل ارسال کرده است، استفاده کند.

از یک CoordinatorLayout استفاده کنید

یک Snackbar به یک view متصل می‌شود. اگر Snackbar به هر شیء مشتق شده از کلاس View ، مانند هر یک از اشیاء layout رایج، متصل شود، قابلیت‌های اولیه را ارائه می‌دهد. با این حال، اگر Snackbar به یک CoordinatorLayout متصل شود، Snackbar ویژگی‌های اضافی به دست می‌آورد:

  • کاربر می‌تواند با کشیدن انگشت خود روی Snackbar غیرفعال کند.
  • وقتی Snackbar ظاهر می‌شود، طرح‌بندی سایر عناصر رابط کاربری را حرکت می‌دهد. برای مثال، اگر طرح‌بندی دارای FloatingActionButton باشد، طرح‌بندی وقتی Snackbar را نشان می‌دهد، دکمه را به سمت بالا حرکت می‌دهد، به جای اینکه Snackbar روی دکمه رسم کند. می‌توانید نحوه‌ی نمایش این حالت را در شکل ۱ مشاهده کنید.

کلاس 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 خود تنظیم کنید. هنگام نمایش پیام، به شناسه طرح‌بندی نیاز دارید.

شکل ۱. CoordinatorLayout FloatingActionButton را هنگام نمایش Snackbar به بالا حرکت می‌دهد.

نمایش یک پیام

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

ایجاد یک شیء Snackbar

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

کاتلین

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

جاوا

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

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

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

کاتلین

mySnackbar.show()

جاوا

mySnackbar.show();

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

اگر می‌خواهید پیامی را به کاربر نشان دهید و نیازی به فراخوانی هیچ یک از متدهای کاربردی شیء Snackbar ندارید، نیازی به نگه داشتن ارجاع به Snackbar پس از فراخوانی show() ندارید. به همین دلیل، استفاده از زنجیره‌سازی متدها برای ایجاد و نمایش یک 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();