É possível usar um Snackbar para exibir uma breve mensagem para o usuário. Ao contrário das
notificações, a
mensagem desaparece automaticamente após um curto período. Um Snackbar é ideal para mensagens breves que o usuário não precisa responder. Por exemplo, um app de e-mails pode usar um Snackbar para informar ao usuário que o app enviou um e-mail.
Usar um CoordinatorLayout
Um Snackbar é anexado a uma visualização. O Snackbar oferece funções básicas se é anexado a algum objeto derivado da classe View, como qualquer um dos objetos de layout comuns. No entanto, se o Snackbar for anexado a um CoordinatorLayout, o Snackbar ganhará outros recursos:
- O usuário pode dispensar o
Snackbardeslizando-o. - O layout move outros elementos de IU quando o
Snackbaraparece. Por exemplo, se o layout tiver umFloatingActionButton, o layout moverá o botão para cima quando ele mostrar umSnackbar, em vez de desenhar oSnackbarsobre o botão. Confira como isso é exibido na Figura 1.
A classe CoordinatorLayout oferece um superconjunto da funcionalidade de FrameLayout.
Se o app já usa um FrameLayout, substitua esse layout por um CoordinatorLayout para ativar a funcionalidade completa do Snackbar. Se o app usa outros objetos de layout, envolva os elementos de layout atuais em um CoordinatorLayout, conforme mostrado no exemplo a seguir:
<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>
Defina uma tag android:id para o CoordinatorLayout.
Você precisa do ID do layout ao exibir a mensagem.
Figura 1. O CoordinatorLayout move o
FloatingActionButton para cima quando o Snackbar aparece.
Exibir uma mensagem
Há duas etapas para exibir uma mensagem. Primeiro, você cria um objeto Snackbar com o texto da mensagem. Depois, você chama o método show() do objeto para exibir a mensagem para o usuário.
Criar um objeto Snackbar
Crie um Snackbar objeto chamando o método estático
Snackbar.make(). Ao criar o Snackbar, especifique a mensagem exibida e o período de exibição da mensagem:
Kotlin
val mySnackbar = Snackbar.make(view, stringId, duration)
Java
Snackbar mySnackbar = Snackbar.make(view, stringId, duration);
- visualizar
-
A visualização a que o
Snackbarserá anexado. O método pesquisa a hierarquia de visualização desde a view transmitida até chegar a umCoordinatorLayoutou à visualização de conteúdo de decoração da janela. Normalmente, é mais simples transmitir oCoordinatorLayoutque envolve seu conteúdo. - stringId
- O ID do recurso da mensagem que você quer exibir. Pode ser um texto formatado ou não formatado.
- duration
-
O período de exibição da mensagem. Pode ser
LENGTH_SHORTouLENGTH_LONG.
Mostrar a mensagem ao usuário
Depois de criar o Snackbar, chame o método show() dele para mostrar o Snackbar ao usuário:
Kotlin
mySnackbar.show()
Java
mySnackbar.show();
O sistema não mostra vários objetos Snackbar ao mesmo tempo. Assim, se a visualização estiver exibindo outro Snackbar, o sistema colocará seu Snackbar na fila e o exibirá após o Snackbar atual expirar ou ser dispensado.
Se você quiser mostrar uma mensagem ao usuário e não precisar chamar nenhum método utilitário do objeto Snackbar, não será necessário manter a referência ao Snackbar depois de chamar show(). Por isso, é comum usar o encadeamento de métodos para criar e mostrar um Snackbar em uma declaração:
Kotlin
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();