A Visualização do desenvolvedor para Android 11 já está disponível. Teste e compartilhe seu feedback.

Visão geral das notificações toast

Uma notificação toast fornece um feedback simples sobre uma operação em uma pequena janela pop-up. Ele só ocupa a quantidade de espaço necessária para a mensagem, e a atividade atual continua visível e interativa. Notificações toast desaparecem automaticamente após um tempo limite.

Por exemplo, clicar em Enviar em um e-mail aciona uma notificação toast "Enviando mensagem…", conforme exibido na captura de tela a seguir.

Se for necessário ter uma resposta do usuário para uma mensagem de status, considere usar uma Notificação.

Noções básicas

Primeiro, instancie um objeto Toast com um dos métodos makeText(). Esse método usa três parâmetros: o app Context, a mensagem de texto e a duração da notificação toast. Ele retorna um objeto Toast devidamente inicializado. Você pode exibir a notificação toast com show(), conforme mostrado no exemplo a seguir.

Kotlin

    val text = "Hello toast!"
    val duration = Toast.LENGTH_SHORT

    val toast = Toast.makeText(applicationContext, text, duration)
    toast.show()
    

Java

    Context context = getApplicationContext();
    CharSequence text = "Hello toast!";
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, text, duration);
    toast.show();
    

Esse exemplo demonstra tudo o que é preciso para a maior parte das notificações toast. Provavelmente você não precisará de mais nada. No entanto, é possível que você queira posicionar a notificação toast de forma diferente ou até mesmo usar seu próprio layout em vez de uma simples mensagem de texto. As seções a seguir descrevem como é possível fazer isso.

Também é possível encadear seus métodos e evitar se prender ao objeto Toast, desta forma:

Kotlin

    Toast.makeText(context, text, duration).show()
    

Java

    Toast.makeText(context, text, duration).show();
    

Como posicionar a notificação toast

Uma notificação toast padrão aparece na parte inferior da tela, centralizada horizontalmente. Você pode alterar essa posição com o método setGravity(int, int, int). Ele aceita três parâmetros: uma constante Gravity, um deslocamento da posição x e um deslocamento da posição y.

Por exemplo, se você decidir que a notificação toast aparecerá no canto superior esquerdo, poderá definir a gravidade da seguinte forma:

Kotlin

    toast.setGravity(Gravity.TOP or Gravity.LEFT, 0, 0)
    

Java

    toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
    

Se você quiser deslocar a posição para a direita, aumente o valor do segundo parâmetro. Para deslocá-la para baixo, aumente o valor do último parâmetro.

Criar uma visualização personalizada da notificação toast

Se uma mensagem de texto simples não for suficiente, você poderá criar um layout personalizado para a notificação toast. Para criar um layout personalizado, defina um layout de visualização, em XML ou no código do aplicativo, e passe o objeto View raiz para o método setView(View).

O snippet a seguir contém um layout personalizado para uma notificação toast (salva como layout/custom_toast.xml):

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:id="@+id/custom_toast_container"
                  android:orientation="horizontal"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:padding="8dp"
                  android:background="#DAAA"
                  >
        <ImageView android:src="@drawable/droid"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:layout_marginRight="8dp"
                   />
        <TextView android:id="@+id/text"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:textColor="#FFF"
                  />
    </LinearLayout>
    

Observe que o código do elemento LinearLayout é "custom_toast_container". É necessário usar esse código e o código do arquivo de layout XML "custom_toast" para inflar o layout, conforme exibido aqui:

Kotlin

    val inflater = layoutInflater
    val container: ViewGroup = findViewById(R.id.custom_toast_container)
    val layout: ViewGroup = inflater.inflate(R.layout.custom_toast, container)
    val text: TextView = layout.findViewById(R.id.text)
    text.text = "This is a custom toast"
    with (Toast(applicationContext)) {
        setGravity(Gravity.CENTER_VERTICAL, 0, 0)
        duration = Toast.LENGTH_LONG
        view = layout
        show()
    }
    

Java

    LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(R.layout.custom_toast,
                    (ViewGroup) findViewById(R.id.custom_toast_container));

    TextView text = (TextView) layout.findViewById(R.id.text);
    text.setText("This is a custom toast");

    Toast toast = new Toast(getApplicationContext());
    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
    toast.setDuration(Toast.LENGTH_LONG);
    toast.setView(layout);
    toast.show();
    

Primeiro, recupere o LayoutInflater com getLayoutInflater() (ou getSystemService()) e, em seguida, aumente o layout do XML usando inflate(int, ViewGroup). O primeiro parâmetro é o código do recurso de layout, e o segundo é a View raiz. Você pode usar esse layout inflado para encontrar mais objetos View no layout. Em seguida, capture e defina o conteúdo dos elementos ImageView e TextView. Por fim, crie uma nova notificação toast com Toast(Context) e defina algumas propriedades dela, por exemplo, a gravidade e a duração. Em seguida, chame setView(View) e passe o layout inflado. Agora você pode exibir a mensagem toast com seu layout personalizado, chamando show().

Observação: só use o construtor público de uma notificação toast, se definir o layout com setView(View). Se você não tiver um layout personalizado para usar, use makeText(Context, int, int) para criar a notificação toast.