Você pode usar um
Snackbar para
mostrar uma breve mensagem ao 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 não exigem ação do usuário. Por exemplo, um
app de e-mail pode usar um Snackbar para informar ao usuário que o app
enviou um e-mail com sucesso.
Usar um CoordinatorLayout
Um Snackbar é anexado a uma visualização. O Snackbar fornece 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, ele terá mais recursos:Snackbar
- O usuário pode dispensar o
Snackbardeslizando para o lado. - O layout move outros elementos da interface quando o
Snackbaraparece. Por exemplo, se o layout tiver umFloatingActionButton, ele vai mover o botão para cima quando mostrar umSnackbar, em vez de desenhar oSnackbarem cima do botão. Confira como isso aparece 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 toda a funcionalidade
do Snackbar. Se o app usar outros objetos de layout, agrupe os elementos de layout
em um CoordinatorLayout, conforme mostrado no exemplo
a seguir:
<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>
Defina uma tag android:id para seu CoordinatorLayout.
Você precisa do ID do layout ao mostrar 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, crie um objeto Snackbar com o texto da mensagem. Em seguida, chame 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
mostra e o tempo de exibição:
val mySnackbar = Snackbar.make(view, stringId, duration)
- visualizar
-
A visualização a que o
Snackbarserá anexado. O método pesquisa a hierarquia de visualização da visualização transmitida até alcançar umCoordinatorLayoutou a visualização de conteúdo da decoração da janela. Normalmente, é mais simples transmitir oCoordinatorLayoutque envolve seu conteúdo. - stringId
- O ID do recurso da mensagem que você quer mostrar. Ele pode ser formatado ou não formatado.
- duração
-
O período em que a mensagem é mostrada. Pode ser
LENGTH_SHORTouLENGTH_LONG.
Mostrar a mensagem ao usuário
Depois de criar o Snackbar, chame o método show()
para mostrar o Snackbar ao usuário:
mySnackbar.show()
O sistema não mostra vários objetos Snackbar ao mesmo tempo. Portanto, se a visualização estiver mostrando outro Snackbar, o sistema vai enfileirar seu Snackbar e mostrá-lo depois que o Snackbar atual expirar ou for dispensado.
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:
Snackbar.make( findViewById(R.id.myCoordinatorLayout), R.string.email_sent, Snackbar.LENGTH_SHORT ).show()