Criar e exibir uma mensagem pop-up

Testar o Compose
O Jetpack Compose é o kit de ferramentas de interface recomendado para Android. Aprenda a adicionar notificações no Compose.

Você pode usar um Snackbar a exibir uma breve mensagem ao usuário. Não gostei Notificações, a desaparece automaticamente após um curto período. Um Snackbar é ideal para mensagens breves que o usuário não precisa responder. Por exemplo, uma o app de e-mails pode usar uma 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 do classe View, como qualquer um dos objetos de layout comuns. No entanto, se Snackbar for anexada a um CoordinatorLayout, o Snackbar recebe recursos adicionais:

  • 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 um FloatingActionButton, o layout move o botão para cima quando mostra um Snackbar, em vez de desenhar o Snackbar na parte de cima do botão. Saiba como como mostrado na Figura 1.

A classe CoordinatorLayout fornece um superconjunto do funcionalidade FrameLayout. Se o app já usa um FrameLayout, você pode substituir esse layout com um CoordinatorLayout para ativar a Snackbar completa funcionalidade de armazenamento. Caso o app use outros objetos de layout, una o layout existente elementos em uma CoordinatorLayout, conforme mostrado abaixo exemplo:

<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 a FloatingActionButton para cima quando o Snackbar aparecer.

Exibir uma mensagem

Há duas etapas para exibir uma mensagem. Primeiro, você cria Objeto Snackbar com o texto da mensagem. Depois, você chama o método show() para exibir a mensagem ao usuário.

Criar um objeto Snackbar

Crie um objeto Snackbar chamando o método estático Snackbar.make() . Ao criar a Snackbar, especifique a mensagem 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 Snackbar será anexado. O método pesquisa a da visualização transmitida até atingir um CoordinatorLayout ou a visualização de conteúdo de decoração da janela. Normalmente, é mais simples transmitir o CoordinatorLayout incluindo seu conteúdo.
stringId
O ID do recurso da mensagem que você quer exibir. Ele pode ser formatado ou texto sem formatação.
visualização
O tempo de exibição da mensagem. Isso pode ser LENGTH_SHORT ou LENGTH_LONG.

Mostrar a mensagem ao usuário

Depois de criar o Snackbar, chame o método show(). para exibir o Snackbar ao usuário:

Kotlin

mySnackbar.show()

Java

mySnackbar.show();

O sistema não mostra vários objetos Snackbar ao mesmo tempo tempo. Portanto, se a visualização estiver mostrando outra Snackbar, o o sistema coloca seu Snackbar na fila e o exibe após o Snackbar expira ou foi 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 o Referência ao Snackbar depois de chamar show(). Para Por isso, é comum usar o encadeamento de métodos para criar e mostrar uma 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();