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 ?

22
demandé sur Zoombie 2011-05-23 12:40:58

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

23
répondu Sergey Glotov 2017-05-23 12:10:43

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);
26
répondu Emran Hamza 2015-01-23 01:31:30

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.

10
répondu noypiscripter 2017-05-23 11:47:26

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..!!!

2
répondu Virag Brahme 2013-12-04 11:14:31

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!

1
répondu Erikas 2014-07-15 16:01:07

ç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();
        }
    });
}
0
répondu Emran Hamza 2012-10-16 14:37:18
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);
0
répondu Zoom ChipIn 2018-03-05 14:46:54

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();
                    }
                });
-4
répondu tjb 2011-10-25 09:09:53