Вы можете использовать тег
Snackbar, чтобы показать пользователю короткое сообщение. В отличие от уведомлений, сообщение автоматически исчезает через короткий промежуток времени. Snackbar идеально подходит для коротких сообщений, на которые пользователю не нужно реагировать. Например, почтовое приложение может использовать Snackbar, чтобы сообщить пользователю, что письмо успешно отправлено.
Используйте CoordinatorLayout
К представлению прикреплен Snackbar. Класс Snackbar предоставляет базовые функции, если он прикреплен к любому объекту, производному от класса View, например к любому из распространенных объектов макета. Однако если Snackbar прикреплен к CoordinatorLayout, то у Snackbar появляются дополнительные функции:
- Пользователь может закрыть
Snackbar, проведя по нему пальцем. - При появлении значка
Snackbarмакет перемещает другие элементы интерфейса. Например, если в макете есть элементFloatingActionButton, то при появлении элементаSnackbarмакет перемещает кнопку вверх, а не рисуетSnackbarповерх кнопки. На рисунке 1 показано, как это выглядит.
Класс 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.
Идентификатор макета понадобится вам при показе сообщения.
Рисунок 1. CoordinatorLayout перемещает FloatingActionButton вверх, когда появляется Snackbar.
Как показать сообщение
Чтобы показать сообщение, нужно выполнить два шага. Сначала создайте объект Snackbar с текстом сообщения. Затем вы вызываете метод show() этого объекта, чтобы показать сообщение пользователю.
Как создать объект Snackbar
Создайте объект Snackbar, вызвав статический метод Snackbar.make(). При создании Snackbar укажите текст сообщения и время его показа:
val mySnackbar = Snackbar.make(view, stringId, duration)
- просмотр
-
Представление, к которому нужно прикрепить
Snackbar. Метод выполняет поиск вверх по иерархии View, начиная с переданного представления, пока не будет достигнутоCoordinatorLayoutили представление контента декора окна. Обычно проще передатьCoordinatorLayoutвместе с контентом. - stringId
- Идентификатор ресурса сообщения, которое вы хотите показать. Это может быть форматированный или неформатированный текст.
- продолжительность
-
Время, в течение которого будет показываться сообщение. Допустимые значения:
LENGTH_SHORTилиLENGTH_LONG.
Показать сообщение пользователю
После создания объекта Snackbar вызовите его метод show(), чтобы показать пользователю объект Snackbar:
mySnackbar.show()
Система не показывает несколько объектов Snackbar одновременно, поэтому, если в представлении уже есть другой объект Snackbar, ваш объект Snackbar будет добавлен в очередь и показан после того, как текущий объект Snackbar будет закрыт или его срок действия истечет.
Если вы хотите показать пользователю сообщение и вам не нужно вызывать какие-либо вспомогательные методы объекта Snackbar, вам не нужно сохранять ссылку на Snackbar после вызова show(). Поэтому для создания и показа Snackbar часто используется цепочка методов:
Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT ).show()