2010-09-23 13 views
28

De todos modos puedo decir que una notificación de tostado aparece solo durante un período de tiempo específico. Generalmente más corto que un mensaje de pan tostado regular.Establecer brindis Aparecer longitud

+1

He desarrollado una clase de Toast personalizada con la que puede mostrar Toast por un período de tiempo específico ... eche un vistazo a mi respuesta http://stackoverflow.com/questions/2220560/can-an-android-toast -be-longer-than-toast-long-long/21203554 # 21203554 –

Respuesta

88

he encontrado una solución a esto llamando toast.cancel() después de un cierto retardo que es más corta que la duración tostadas estándar.

 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

¡Gran solución! Muchas gracias – Komi

+0

Bonita solución. ¡Realmente me ayudó! – Antonis

+0

+1 para la solución simple –

6

Usted puede hacer algo como:

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

pero no va a mostrarse.

La duración debe ser LENGTH_SHORT o LENGTH_LONG.

1

se puede establecer una mayor duración mediante el uso de un corte, tal como se describe here

0

// probarlo

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

No creo que esto haga nada por extender la duración. Si la duración no es LENGTH_SHORT o LENGTH_LONG, su valor predeterminado es LENGTH_LONG. Este método acepta valores arbitrarios en la naturaleza, pero en realidad, solo cambia el comportamiento (longitud del tostado) si el valor no es cero. –

4

Prueba este

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(); 

Esperanza esta ayuda .. Disfrute .. !!!

0

La clase stock de Android Toast está codificada para aceptar solo un parámetro Toast.LENGTH_SHORT o Toast.LENGTH_LONG al llamar a un Toast. Los valores de estos parámetros son 0 y 1, respectivamente, y no aceptan ningún valor de milisegundos al llamar a setDuration(); Si debe mostrar un Toast para una duración diferente de la que puede considerar usar una clase de mi biblioteca SuperToasts. La clase SuperToast en la biblioteca es una imitación de la clase stock Toast de Android y puede tener cualquier valor de milisegundos utilizado como parámetro de duración. No recomiendo usar esta clase para mostrar un Toast más largo que la duración máxima de Stock Toast de Android debido al efecto prolongado de estas tostadas. Te recomiendo que uses la clase SuperActivityToast para mostrar los mensajes de Toast en una actividad/fragmento porque el Toast se destruirá junto con tu actividad y se eliminará cualquier posibilidad de que persista un mensaje. Para utilizar esta clase puede crear un nuevo objeto:

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(); 

O utilice el método estático:

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

Hay un montón de opciones de personalización que puede utilizar con la biblioteca, así, echa un vistazo a la Wiki ¡página!

-1

Aquí es otra manera de configurar el tiempo por su elección:

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 duración se especifica en milisegundos.

+0

Probado sin éxito ... – zeflex

Cuestiones relacionadas