Como Alterar o Tempo de Exibição da Mensagem Toast no Android

A mensagem Toast é aquela mensagem que aparece para confirmar alguma alteração, progresso de uma tarefa ou qualquer outra informação em dispositivos Android. A mensagem normalmente possui o texto em branco com um fundo cinza escuro.

A ideia por trás deste tipo de mensagem é passar uma informação para o usuário sem atrapalhar a atividade que ele estiver executando. A mensagem "aparece" por um curto espaço de tempo e "desaparece" sem a necessidade de interação do usuário.

A mensagem Toast como é conhecida no Android é uma View onde você pode definir a mensagem e o tempo de exibição, o intervalo de tempo pode ser curto - LENGHT_SHORT, dura em torno de 2 segundos ou longo - LENGHT_LONG, que dura em torno de 3,5 segundos. Mas e se você precisar que a mensagem fique visível por um intervalo de tempo maior, para o caso por exemplo, de uma mensagem mais longa.

A classe Toast não permite definir um intervalo de exibição da mensagem diferente dos valores pré-definidos, LENGHT_LONG e LENGHT_SHORT, então para aumentar este tempo podemos usar como uma possível solução a classe CountDownTimer. Esta classe permite definir um intervalo de tempo de exibição da mensagem durante um tempo pré-definido por exemplo, exibe a mensagem a cada 1 segundo durante 10 segundos. Segue o código exemplo para exibir uma mensagem Toast por 10 segundos:


final Toast toast = Toast.makeText(this, "Esta é uma mensagem Toast",
        Toast.LENGTH_LONG);

// Exibe a mensagem por 10 segundos
CountDownTimer toastCountDown;
toastCountDown = new CountDownTimer(10000, 1000) {
    public void onTick(long millisUntilFinished) {
        toast.show();
    }
    public void onFinish() {
        toast.cancel();
    }
};

// Exibe a mensagem
toast.show();
// Inicia a contagem do tempo
toastCountDown.start();

No método onFinish() da classe CountDownTimer cancelamos a exibição da mensagem quando atinge o tempo máximo.

Esta solução funciona porque a mensagem fica visível na tela pelo tempo definido e desaparece ao final do tempo máximo.