android - length_short - toast duration
Establecer longitud de apariencia de brindis (7)
//intentalo
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();
}
¿Hay alguna forma en que pueda decir que una notificación de Toast se muestre solo por un período de tiempo específico? Generalmente más corto que un mensaje de pan tostado regular.
Aquí hay otra forma de configurar el tiempo según 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.
Encontré una solución a esto llamando a tostar.cancel () después de un cierto retraso que es más corto que la duración del tostado 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);
La clase Stock Toast de Android 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 utilizar 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 longitud máxima de Android Toast stock 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, eliminando cualquier posibilidad de que persista un mensaje. Para usar esta clase puedes 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 usa el método estático:
SuperActivityToast.createDarkSuperActivityToast(this, "Hello world!", SuperToast.DURATION_SHORT).show();
¡También hay muchas opciones de personalización que puedes usar con la biblioteca, echa un vistazo a la página Wiki !
No.
Puedes hacer algo como:
Toast a = Toast.makeText(this, "a", Toast.LENGTH_LONG);
a.setDuration(300);
pero no se mostrará.
La duración debe ser LENGTH_SHORT
o LENGTH_LONG
.
Prueba esto
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();
Espero que esto ayude ... ¡¡¡Disfruta .. !!!
Puede establecer una duración más larga mediante el uso de un hack, como se describe here