Вы можете использовать Snackbar
для отображения краткого сообщения пользователю. В отличие от уведомлений , сообщение автоматически исчезает через короткое время. Snackbar
идеально подходит для коротких сообщений, которые пользователю не нужно выполнять. Например, приложение электронной почты может использовать Snackbar
, чтобы сообщить пользователю, что приложение успешно отправило электронное письмо.
Используйте координаторлайаут
К представлению прикреплена 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
. При отображении сообщения вам понадобится идентификатор макета.
Отображение сообщения
Отображение сообщения состоит из двух шагов. Сначала вы создаете объект Snackbar
с текстом сообщения. Затем вы вызываете метод show()
этого объекта, чтобы отобразить сообщение пользователю.
Создайте объект Snackbar
Создайте объект Snackbar
, вызвав статический метод Snackbar.make()
. При создании Snackbar
укажите отображаемое сообщение и продолжительность его отображения:
Котлин
val mySnackbar = Snackbar.make(view, stringId, duration)
Ява
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- вид
- Представление, к которому можно прикрепить
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();