web-dev-qa-db-fra.com

Définir la durée d'affichage du pain grillé

Y a-t-il un moyen de dire à une notification Toast de ne s'afficher que pendant un laps de temps déterminé? Généralement plus court qu'un message de pain grillé ordinaire.

29
Mitchell

J'ai trouvé une solution à ce problème en appelant toast.cancel () après un certain délai plus court que la durée standard de toast.

        final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
        toast.show();

        Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
               @Override
               public void run() {
                   toast.cancel(); 
               }
        }, 1000);
94
noypiscripter

Non.

Vous pouvez faire quelque chose comme:

Toast a = Toast.makeText(this, "a", Toast.LENGTH_LONG);
a.setDuration(300);

mais cela ne se montrera pas.

La durée devrait être LENGTH_SHORT ou LENGTH_LONG.

6
Macarse

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

4
Virag Brahme

Vous pouvez définir une durée plus longue en utilisant un hack, comme décrit ici

1
Skip

// l'essayer 

    public void myToast(String message) {
    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(400);
    myMessage.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL
            | Gravity.CENTER_VERTICAL);
    toast.show();
}
0
Emran Hamza

La classe Android Toast stockée est codée pour accepter uniquement un paramètre Toast.LENGTH_SHORT ou Toast.LENGTH_LONG lors de l'appel d'un Toast. Les valeurs de ces paramètres sont 0 et 1 respectivement et n'acceptent aucune valeur en millisecondes lors de l'appel de setDuration (); Si vous devez montrer un Toast pour une durée différente de celle que vous envisagez d'utiliser une classe de ma SuperToasts library. La classe SuperToast dans la bibliothèque est une imitation de la classe Android Toast et peut avoir n'importe quelle valeur en millisecondes utilisée comme paramètre de durée. Je ne recommande pas d'utiliser cette classe pour afficher un Toast plus long que la longueur maximale stockée du Toast Android en raison de l'effet persistant de ces Toasts. Je vous recommande d'utiliser la classe SuperActivityToast pour afficher les messages Toast dans une activité/un fragment, car ce dernier sera détruit en même temps que votre activité, éliminant ainsi le risque de perdre un message. Pour utiliser cette classe, vous pouvez créer un nouvel objet:

SuperActivityToast superActivityToast = new SuperActivityToast(this);  
superActivityToast.setDuration(SuperToast.DURATION_SHORT); 
// setDuration(); can also accept millisecond values
// superActivityToast.setDuration(1000);  
superActivityToast.setText("Hello world!");  
superActivityToast.show();  

Ou utilisez la méthode statique:

SuperActivityToast.createDarkSuperActivityToast(this, "Hello world!", SuperToast.DURATION_SHORT).show();  

Il existe une multitude d'options de personnalisation que vous pouvez utiliser avec la bibliothèque également, consultez la page Wiki !

0
John P.