Comment mettre le temps D'affichage Toast moins que Toast.LONGUEUR COURTE
je veux montrer toast moins que Toast.LENGTH_SHORT, alors que je sens sa prise autour de 2 secondes. Je ne veux porter des toasts qu'une demi-seconde.
et quel est l'intervalle de temps pour les toasts.LENGTH_SHORT et Toast.LENGTH_LONG ?
8 réponses
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
), alors 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
cette fois pourrait être définissable par l'utilisateur.
mais je ne trouve pas le moyen de faire ça.
Mise à jour: il y a une solution ici: Set Toast semblent Longueur
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 la solution proposée ici . En gros, vous appeler de pain grillé.Annuler () après un délai spécifié qui est plus court que la durée standard de toast.
Essayez cette
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();
Espérons que cette aide.. Profiter..!!!
pour noobs j'ai fait 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 doit fonctionner qu'en Fragment! Si vous voulez qu'il fonctionne en activité, remplacer getActivity() par getApplicationContext() dans le message toast. Bonne chance les développeurs!
ç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();
}
});
}
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(activité principale.c'est l'exemple ,il pourrait être modifié par vous-même) et(dans la méthode showMyToast (premier param ,deuxième param), le deuxième paramètre est le temps ce que u a vraiment défini comme ce)
Toast toast=Toast.makeText(MainActivity.this, "MyToast Test", Toast.LENGTH_LONG);
showMyToast(toast, 1000);
cela semble fonctionner pour moi (mettez la durée à tout ce que vous voulez):
mActivity.runOnUiThread(new Runnable() {
public void run() {
Toast toast = new Toast(mActivity
.getApplicationContext());
toast.setView(layout);
toast.setDuration(400);
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
toast.show();
}
});