ساختن و نمایش دادن پیام بالاپر

امتحان کردن روش «نوشتن»
‫Jetpack Compose جعبه‌ابزار واسط کاربر توصیه‌شده برای Android است. با نحوه افزودن اعلان در «نوشتن» آشنا شوید.

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

استفاده از CoordinatorLayout

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

  • کاربر می‌تواند Snackbar را با تند کشیدن روی آن ببندد.
  • وقتی Snackbar ظاهر می‌شود، چیدمان عناصر دیگر میانای کاربر را جابه‌جا می‌کند. برای مثال، اگر چیدمان دارای FloatingActionButton باشد، وقتی Snackbar را نشان می‌دهد، چیدمان دکمه را به‌جای اینکه Snackbar را روی دکمه بکشد، به بالا می‌برد. می‌توانید نحوه نمایش آن را در «شکل ۱» ببینید.

کلاس CoordinatorLayout مجموعه بالاتری از عملکرد FrameLayout را ارائه می‌دهد. اگر برنامه‌تان ازقبل از FrameLayout استفاده می‌کند، می‌توانید آن چیدمان را با CoordinatorLayout جایگزین کنید تا قابلیت‌های کامل Snackbar فعال شود. اگر برنامه‌تان از عناصر چیدمان دیگری استفاده می‌کند، عناصر چیدمان موجودتان را در CoordinatorLayout بپیچید، همان‌طور که در مثال زیر نشان داده شده است:

<androidx.coordinatorlayout.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/myCoordinatorLayout"
    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>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

برچسب android:id را برای CoordinatorLayout خود تنظیم کنید. وقتی پیام را نمایش می‌دهید به شناسه چیدمان نیاز دارید.

شکل ۱. وقتی Snackbar ظاهر می‌شود، CoordinatorLayout FloatingActionButton را به‌بالا می‌برد.

نمایش پیام

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

ایجاد شیء «میان‌وعده‌بار»

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

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

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

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

mySnackbar.show()

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

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

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