Je veux afficher moins de pain grillé que Toast.LENGTH_SHORT, car je sens que cela prend environ 2 secondes. Je veux afficher des toasts que pendant une demi-seconde.
Et quel est l'intervalle de temps pour Toast.LENGTH_SHORT et Toast.LENGTH_LONG?
Il n'y a que deux valeurs possibles:
private static final int LONG_DELAY = 3500; // 3.5 seconds
private static final int SHORT_DELAY = 2000; // 2 seconds
Définir d'autres valeurs ne fonctionne pas. Si la durée n'est pas égale à 1 (Toast.LENGTH_LONG
), la durée sera SHORT_DELAY (2 secondes):
long delay = immediate ? 0 : (r.duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY);
Dans les sources de Toast
écrit que
Ce temps pourrait être défini par l'utilisateur.
mais je ne peux pas trouver le moyen de le faire.
Mise à jour: Il existe une solution ici: Définir la durée d'affichage du pain grillé
Cela a fonctionné pour moi
final Toast toast = Toast.makeText(getApplicationContext(), "The following message will disappear in half second", Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 500);
Voir ma solution suggérée ici . En gros, vous appelez toast.cancel () après un délai spécifié inférieur à la durée standard de toast.
Essaye ça
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();
J'espère que cette aide .. Enjoy .. !!!
Pour les noobs, j'ai mis au point la solution la plus simple: une méthode.
public void showToastMessage(String text, int duration){
final Toast toast = Toast.makeText(getActivity(), text, Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, duration);
}
Vous devez également importer:
import Android.os.Handler;
import Android.widget.Toast;
Vous pouvez appeler cette méthode par exemple:
showToastMessage("your noob", 1000);
la méthode ci-dessus ne devrait fonctionner que dans Fragment! Si vous voulez que cela fonctionne dans Activity, remplacez getActivity () par getApplicationContext () dans le message toast. Bonne chance aux développeurs!
public void showMyToast(final Toast toast, final int delay) {
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
toast.show();
}
}, 0, 1000);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
toast.cancel();
timer.cancel();
}
}, delay);
}
// comment utiliser (MainActivity.Ceci est un exemple, il pourrait être changé par vous-même) et (Dans la méthode showMyToast (first param, second param), le second paramètre est le temps que vous définissez vraiment comme this)
Toast toast=Toast.makeText(MainActivity.this, "MyToast Test", Toast.LENGTH_LONG);
showMyToast(toast, 1000);
ça va marcher.
public void toastMessage(final String message) {
this.runOnUiThread(new Runnable() {
public void run() {
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(100);
myMessage.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL
| Gravity.CENTER_VERTICAL);
toast.show();
}
});
}