É possível usar um
Snackbar
para
exibir uma breve mensagem para o usuário. Ao contrário de
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 funcionalidade básica se estiver anexado a qualquer objeto derivado da
classe View
, como
qualquer um dos objetos de layout comuns. No entanto, se o Snackbar
estiver
anexado a um
CoordinatorLayout
,
o Snackbar
vai receber outros recursos:
- O usuário pode dispensar a
Snackbar
deslizando-a para fora. - O layout move outros elementos da interface quando a
Snackbar
aparece. Por exemplo, se o layout tiver umFloatingActionButton
, ele moverá o botão para cima quando mostrar umSnackbar
, em vez de desenhar oSnackbar
sobre o botão. Veja como isso é exibido na Figura 1.
A classe CoordinatorLayout
oferece um superconjunto da
funcionalidade do
FrameLayout
.
Se o app já usa um FrameLayout
, você pode substituir esse layout
por um CoordinatorLayout
para ativar a funcionalidade completa
de Snackbar
. Se o app usa outros objetos de layout, una os elementos de layout
já existentes em uma CoordinatorLayout
, conforme mostrado no exemplo
abaixo:
<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.
Exibir uma mensagem
Há duas etapas para exibir uma mensagem. Primeiro, crie um objeto Snackbar
com o texto da mensagem. Em seguida, você chama o método
show()
desse objeto para mostrar a mensagem ao usuário.
Criar um objeto Snackbar
Crie um objeto Snackbar
chamando o método estático Snackbar.make()
. Ao criar o Snackbar
, especifique a mensagem que ele
vai mostrar 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);
- visualização
-
A visualização a que o
Snackbar
será anexado. O método pesquisa a hierarquia de visualização desde a visualização transmitida até chegar a umCoordinatorLayout
ou à visualização de conteúdo de decoração da janela. Normalmente, é mais simples transmitir oCoordinatorLayout
que abrange seu conteúdo. - stringId
- O ID do recurso da mensagem que você quer exibir. Pode ser um texto formatado ou não formatado.
- visualização
-
O período de exibição da mensagem. Pode ser
LENGTH_SHORT
ouLENGTH_LONG
.
Mostrar a mensagem ao usuário
Depois de criar o Snackbar
, chame o método show()
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. Portanto, se a visualização estiver mostrando outra Snackbar
, o
sistema vai colocar a Snackbar
na fila e exibi-la depois que a
Snackbar
atual expirar ou for dispensada.
Se você quiser mostrar uma mensagem ao usuário e não precisar chamar nenhum dos
métodos utilitários do objeto Snackbar
, não será necessário manter a
referência ao Snackbar
depois de chamar show()
. Por
esse motivo, é comum usar o encadeamento de métodos para criar e mostrar um
Snackbar
em uma instruçã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();