Создание и показ всплывающего сообщения

Как создать письмо
Jetpack Compose – это рекомендуемый набор инструментов для создания интерфейсов Android. Как добавить уведомления в Compose

Вы можете использовать тег 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()