Ho trovato this answer. Anche se un po 'più complesso, consente anche di creare toast più lunghi di Toast.LENGTH_LONG. Potrebbe essere necessario modificare la durata del tick da 1000ms a 500ms.
private Toast mToastToShow;
public void showToast(View view) {
// Set the toast and duration
int toastDurationInMilliSeconds = 10000;
mToastToShow = Toast.makeText(this, "Hello world, I am a toast.", Toast.LENGTH_LONG);
// Set the countdown to display the toast
CountDownTimer toastCountDown;
toastCountDown = new CountDownTimer(toastDurationInMilliSeconds, 1000 /*Tick duration*/) {
public void onTick(long millisUntilFinished) {
mToastToShow.show();
}
public void onFinish() {
mToastToShow.cancel();
}
};
// Show the toast and starts the countdown
mToastToShow.show();
toastCountDown.start();
}
Ecco come funziona: il conto alla rovescia ha un tempo di notifica più breve rispetto alla durata per la quale viene visualizzato il brindisi in base alla bandiera, in modo che il pane può essere mostrato ancora una volta se il conto alla rovescia non è finito. Se il pane tostato viene nuovamente visualizzato mentre è ancora sullo schermo, rimarrà lì per l'intera durata senza lampeggiare. Al termine del conto alla rovescia, il brindisi viene annullato per nasconderlo anche se la durata della visualizzazione non è terminata.
Questo funziona anche se il brindisi deve essere visualizzato per una durata inferiore alla durata predefinita: il primo brindisi visualizzato verrà semplicemente annullato al termine del conto alla rovescia.
letto il doc. l'ultimo parametro può assumere solo valori predefiniti, non è in millis. – njzk2
[È possibile visualizzare il brindisi finché necessario] (http://stackoverflow.com/a/20373743/726863) –
Possibile duplicato di [È possibile che un toast Android sia più lungo di "Toast.LENGTH \ _LONG"?] (Http : //stackoverflow.com/questions/2220560/can-an-android-toast-be-longer-than-toast-length-long) –