I need the exact duration of LENGTH_LONG and LENGTH_SHORT in milliseconds (ms). Also I need to know if the duration of Toast message with LENGTH_LONG will have the same dura
Through trial and error I have found Toast.LENGTH_LONG
lasts very close to 2500ms
its true that we are not allowed to change the duration of the Toast. But if you are searching for an alternative and you really need to do this with a Toast, then you can try this.
Keep another duplicate toast in the next line
Ex:
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
Toast.makeText(this, "Hello StackOverFlow", Toast.LENGTH_LONG).show();
The user won't detect any change in transitions between 2 toasts.
Thanks.
The Toast.LENGTH_SHORT
and Toast.LENGTH_LONG
are just flags.
You can find here the official android source where these flags are defined:
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);
}
}
I am wondering that why do you not use method setDuration() supported in Toast.java class???
/**
* Set how long to show the view for.
* @see #LENGTH_SHORT
* @see #LENGTH_LONG
*/
public void setDuration(@Duration int duration) {
mDuration = duration;
}
You need set the duration override, with setDuration
in the action, example:
int s = 6000; // milisegundo
Snackbar.make(coordinatorLayout, "This is my Snackbar", Snackbar.LENGTH_LONG).setDuration(s)
.show();
Answered here. Like you mentioned Toast.LENGTH_SHORT
and Toast.LENGTH_LONG
are not in ms but 0 or 1.
The actual durations are:
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds