Lukap
Necesito la duración exacta de LENGTH_LONG y LENGTH_SHORT en milisegundos (ms). También necesito saber si la duración del mensaje Toast con LENGTH_LONG tendrá la misma duración en cualquier teléfono y con cualquier versión de API.
¿Alguien sabe donde se define la duración?, osea definida en ms. Sé que LENGTH_LONG es una const int con valor 1. Pero no pude encontrar dónde se define la duración real.
Lars
Respondido aquí. como mencionaste Toast.LENGTH_SHORT
y Toast.LENGTH_LONG
no están en ms sino en 0 o 1.
Las duraciones reales son:
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds
gabriele mariotti
los Toast.LENGTH_SHORT
y Toast.LENGTH_LONG
son solo banderas
Puedes encontrar aquí el oficial fuente androide donde estos banderas están definidos:
public class NotificationManagerService extends SystemService {
static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT;
/** Amount of time (in milliseconds) a toast window can be shown. */
//public static final int TOAST_WINDOW_TIMEOUT = 3500; // 3.5 seconds
static final int SHORT_DELAY = 2000; // 2 seconds
private void scheduleDurationReachedLocked(ToastRecord r)
{
mHandler.removeCallbacksAndMessages(r);
Message m = Message.obtain(mHandler, MESSAGE_DURATION_REACHED, r);
int delay = r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY;
//....
mHandler.sendMessageDelayed(m, delay);
}
}
-
Ahora, se cambia a:
static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT; static final int SHORT_DELAY = 2000; // 2 seconds still the same
– Mayank Sharma
26 de diciembre de 2019 a las 7:24
es cierto que no se nos permite cambiar la duración del brindis. Pero si está buscando una alternativa y realmente necesita hacer esto con un Toast, entonces puede probar esto.
Mantenga otro brindis duplicado en la siguiente línea
Ex:
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
El usuario no detectará ningún cambio en las transiciones entre 2 brindis.
Gracias.
-
Dado que se menciona claramente como ‘imposible de hacer’ en las respuestas anteriores, proporciono un método alternativo y también lo mencioné claramente. Espero que puedas entenderlo. Acabo de buscar ahora y descubrí que había el mismo tipo de pregunta y revisé las respuestas, algunas de ellas son alternativas. Pero no encuentro ningún voto negativo para ellos. Mejor buscar alternativas que que te digan imposible ¿verdad? Espero que esto tenga sentido. ¿Puede un Toast de Android ser más largo que “Toast.LENGTH_LONG”?
– PasinduJay
9 de marzo de 2016 a las 10:01
Faxon Lander Montenegro
Debe establecer la anulación de la duración, con setDuration
en la acción, ejemplo:
int s = 6000; // milisegundo
Snackbar.make(coordinatorLayout, "This is my Snackbar", Snackbar.LENGTH_LONG).setDuration(s)
.show();
Me pregunto por qué no usa el método setDuration() compatible con la clase Toast.java.
/**
* Set how long to show the view for.
* @see #LENGTH_SHORT
* @see #LENGTH_LONG
*/
public void setDuration(@Duration int duration) {
mDuration = duration;
}
-
Solo puede asignar un valor int: LENGTH_SHORT o LENGTH_LONG.
– Gabriele Mariotti
30 de diciembre de 2019 a las 16:03
hitesh sahu
LENGTH_SHORT
& LENGTH_LONG
se asignan al intervalo de tiempo de
1 segundo (1000mS) & 5 segundos (5000mS) respectivamente,
Para ver esto, debe profundizar en el código fuente AOSP de Toast. en el intervalo de tiempo de la clase Toast se decide en función de la BANDERA
mParams.hideTimeoutMilliseconds = mDuration == Toast.LENGTH_LONG ? LONG_DURATION_TIMEOUT : SHORT_DURATION_TIMEOUT;
dónde
static final long SHORT_DURATION_TIMEOUT = 5000;
static final long LONG_DURATION_TIMEOUT = 1000;
-
Solo puede asignar un valor int: LENGTH_SHORT o LENGTH_LONG.
– Gabriele Mariotti
30 de diciembre de 2019 a las 16:03
Saro Taşciyan
Mediante prueba y error he encontrado Toast.LENGTH_LONG
dura muy cerca de 2500ms
¿Intentó simplemente especificar milisegundos en setDuration ()? Los documentos dicen que será configurable por el usuario, pero no son específicos sobre este tema
– Konstantin Pribluda
1 de noviembre de 2011 a las 10:40