С помощью 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 укажите сообщение, которое он будет отображать, и продолжительность его отображения:
Котлин
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 пользователю:
Котлин
mySnackbar.show()
Java
mySnackbar.show();
Система не отображает несколько объектов Snackbar одновременно, поэтому, если в данный момент отображается другой Snackbar , система ставит ваш Snackbar в очередь и отображает его после того, как текущий Snackbar истечет или будет закрыт.
Если вы хотите показать пользователю сообщение и вам не нужно вызывать какие-либо вспомогательные методы объекта Snackbar , вам не нужно сохранять ссылку на Snackbar после вызова show() . По этой причине часто используется цепочка вызовов методов для создания и отображения Snackbar в одном операторе:
Котлин
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();
