شما میتوانید از یک 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();
