What is the duration of a Toast LENGTH_LONG and LENGTH_SHORT
Solution 1
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
Solution 2
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);
}
}
Solution 3
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.
Solution 4
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();
Solution 5
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;
}
Related videos on Youtube
Comments
-
Lukap almost 2 years
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 duration in any phone and with any API version.
Does someone know where is the duration defined ?, I mean defined in ms . I know that LENGTH_LONG is some int const with value 1. But I could not find where is the actual duration defined.
-
Konstantin Pribluda over 12 yearsdid you tried to just specify milliseocnds in setDuration()? Docs say it shall be user configurable, but are not specific on this issue
-
-
PasinduJay about 8 yearsSince it is clearly mentioned as 'impossible to do' in the previous replies I'm providing an alternative method and I clearly mentioned it as well. Hope you can understand. I just searched now and found out same kind of question was there and go through the answers some of them are alternatives. But I don't find any down votes for them. Better for find alternatives than being said impossible only right? Hope this make sense. Can an Android Toast be longer than “Toast.LENGTH_LONG”?
-
Mayank Sharma over 4 yearsNow, it is changed to:
static final int LONG_DELAY = PhoneWindowManager.TOAST_WINDOW_TIMEOUT; static final int SHORT_DELAY = 2000; // 2 seconds still the same
-
Gabriele Mariotti over 4 yearsYou can only assign an int value: LENGTH_SHORT, or LENGTH_LONG.