2010-09-23 15 views
28

È comunque possibile comunicare a Toast Notification di essere visualizzato solo per un periodo di tempo specificato. Generalmente più breve di un normale messaggio di toast.Set Toast Appear Length

+1

Ho sviluppato una classe Toast personalizzata con cui è possibile visualizzare Toast per un determinato periodo di tempo ... dare un'occhiata alla mia risposta http://stackoverflow.com/questions/2220560/can-an-android-toast -be-più-lungo-lungo-lungo-lungo/21203554 # 21203554 –

risposta

88

ho trovato una soluzione a questo chiamando toast.cancel() dopo un certo ritardo che è più breve rispetto alla durata brindisi standard.

 final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT); 
     toast.show(); 

     Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        toast.cancel(); 
       } 
     }, 1000); 
+0

Ottima soluzione! Grazie mille – Komi

+0

Soluzione alternativa. Mi ha davvero aiutato! – Antonis

+0

+1 per la soluzione semplice –

6

No.

Si può fare qualcosa di simile:

Toast a = Toast.makeText(this, "a", Toast.LENGTH_LONG); 
a.setDuration(300); 

ma non sarà mostrarsi.

La durata deve essere LENGTH_SHORT o LENGTH_LONG.

1

È possibile impostare una durata più lunga utilizzando un hack, come descritto here

0

// provare

public void myToast(String message) { 
    LayoutInflater myInflator = getLayoutInflater(); 
    View myLayout = myInflator.inflate(R.layout.custom_layout, 
      (ViewGroup) findViewById(R.id.toastlayout)); 
    TextView myMessage = (TextView) myLayout.findViewById(R.id.label); 
    myMessage.setText(message); 
    Toast toast = new Toast(getApplicationContext()); 
    toast.setView(myLayout); 
    toast.setDuration(400); 
    myMessage.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL 
      | Gravity.CENTER_VERTICAL); 
    toast.show(); 
} 
+1

Non penso che questo faccia nulla per estendere la durata. Se la durata non è né LENGTH_SHORT né LENGTH_LONG, il valore predefinito è LENGTH_LONG. Questo metodo accetta valori arbitrari in natura, ma in realtà modifica solo il comportamento (durata del brindisi) se il valore non è zero. –

4

Prova questa

final Toast toast = Toast.makeText(getBaseContext(), "YOUR MESSAGE",Toast.LENGTH_SHORT); 
      toast.show(); 
      new CountDownTimer(10000, 1000) 
      { 
       public void onTick(long millisUntilFinished) {toast.show();} 
       public void onFinish() {toast.cancel();} 
      }.start(); 

Spero che questo aiuto .. Godetevi .. !!!

0

La classe Android Toast stock è codificata per accettare solo un parametro Toast.LENGTH_SHORT o Toast.LENGTH_LONG quando si chiama un Toast. I valori di questi parametri sono rispettivamente 0 e 1 e non accettano alcun valore di millisecondo quando si chiama setDuration(); Se devi mostrare un toast per una durata diversa da quella che potresti prendere in considerazione di utilizzare una classe dalla mia libreria SuperToasts. La classe SuperToast nella libreria è un imitazione della classe Android Toast di riserva e può avere un valore di millisecondo utilizzato come parametro di durata. Non è consigliabile utilizzare questa classe per mostrare un Toast più lungo rispetto alla durata massima del toast Android Android a causa dell'effetto persistente di questi toast. Vi consiglio di utilizzare la classe SuperActivityToast per mostrare i messaggi Toast in un'attività/frammento poiché il Toast sarà distrutto insieme alla vostra attività, eliminando ogni possibilità di un messaggio persistente. Per utilizzare questa classe è possibile creare un nuovo oggetto:

SuperActivityToast superActivityToast = new SuperActivityToast(this); 
superActivityToast.setDuration(SuperToast.DURATION_SHORT); 
// setDuration(); can also accept millisecond values 
// superActivityToast.setDuration(1000); 
superActivityToast.setText("Hello world!"); 
superActivityToast.show(); 

Oppure utilizzare il metodo statico:

SuperActivityToast.createDarkSuperActivityToast(this, "Hello world!", SuperToast.DURATION_SHORT).show(); 

Ci sono tonnellate di opzioni di personalizzazione che è possibile utilizzare con la libreria, così, controllare il Wiki pagina!

-1

Ecco un altro modo per configurare il tempo secondo la vostra scelta:

public void showMsg(String msg, final long duration) { 
    final Toast toast = Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG); 
    toast.show(); 
    Thread t = new Thread() { 
     public void run(){ 
      try { 
       sleep(duration); 
       toast.cancel(); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
      finally { } 
     } 
    }; 
    t.start(); 
} 

NOTA: La durata è specificato in millisecondi.

+0

Provato senza successo ... – zeflex