Lors de l'utilisation de setDuration () pour un Toast, est-il possible de définir une longueur personnalisée ou au moins quelque chose de plus long que Toast.LENGTH_LONG
?
android
android-toast
Hussein El Feky
la source
la source
toast
tag? Cela semble pertinent pour la question ..toast
balise pour. Je pensais que les balises étaient là pour aider à la recherche et au tri ettoast
c'est certainement une recherche courante.android
ettoast
semblent parfaits.Réponses:
Les valeurs de
LENGTH_SHORT
etLENGTH_LONG
sont 0 et 1. Cela signifie qu'elles sont traitées comme des indicateurs plutôt que des durées réelles, donc je ne pense pas qu'il sera possible de définir la durée sur autre chose que ces valeurs.Si vous souhaitez afficher un message à l'utilisateur plus longtemps, envisagez une notification de barre d'état . Les notifications de la barre d'état peuvent être annulées par programme lorsqu'elles ne sont plus pertinentes.
la source
Si vous creusez plus profondément dans le code Android, vous pouvez trouver les lignes qui indiquent clairement que nous ne pouvons pas modifier la durée du message Toast.
et les valeurs par défaut pour la durée sont
la source
Vous voudrez peut-être essayer:
pour doubler le temps. Si vous spécifiez 3 au lieu de 2, cela triplera le temps..etc.
la source
Toast.cancel()
aux endroits appropriésSi vous voulez qu'un
Toast
persiste, j'ai trouvé que vous pouvez le contourner en ayant unTimer
appel àtoast.show()
plusieurs reprises (chaque seconde devrait le faire). L'appelshow()
ne casse rien si leToast
est déjà affiché, mais il actualise le temps qu'il reste à l'écran.la source
ViewGroup
OnTouch
événement. Pour optimiser cela, vous devriez probablement faire répéter votre minuterie au plus près de l'heure réelleToast
affichée à l'écran (3,5 secondes pour longtemps, 2 secondes pour court)J'ai développé une classe de pain grillé personnalisé avec laquelle vous pouvez montrer du pain grillé pour une durée souhaitée (en Milli secondes)
la source
J'ai codé une classe d'aide pour ce faire. Vous pouvez voir le code sur github: https://github.com/quiqueqs/Toast-Expander/blob/master/src/com/thirtymatches/toasted/ToastedActivity.java
Voici comment afficher un toast pendant 5 secondes (ou 5000 millisecondes):
la source
Je sais que je suis un peu en retard, mais j'ai pris la réponse de Regis_AG et l'ai emballée dans une classe d'aide et cela fonctionne très bien.
Dans votre code d'application, faites simplement quelque chose comme ceci:
la source
Je sais que la réponse est assez tardive. J'ai eu le même problème et j'ai décidé d'implémenter ma propre version de Toast Bones, après avoir examiné le code source d'Android pour toast.
Fondamentalement, vous devez créer un nouveau gestionnaire de fenêtres et afficher et masquer la fenêtre pour la durée souhaitée à l'aide d'un gestionnaire
Après l'initialisation de la mise en page, vous pouvez utiliser vos propres méthodes de masquage et d'affichage
Maintenant, tout ce dont vous avez besoin est d'ajouter deux threads exécutables qui appellent le handleShow () et le handleHide () que vous pourriez publier dans le gestionnaire.
et la dernière partie
Ce fut une mise en œuvre rapide et sale .. N'ont pris aucune performance en considération.
la source
Affichage du toast LONG_DELAY pendant 3,5 sec et affichage du toast SHORT_DELAY pendant 2 sec .
Toast utilise en interne INotificationManager et appelle sa méthode enqueueToast chaque fois qu'un Toast.show () est appelé.
Appeler le show () avec SHORT_DELAY deux fois mettra à nouveau le même toast en file d'attente. il s'affichera pendant 4 secondes (2 secondes + 2 secondes).
de même, appeler show () avec LONG_DELAY deux fois mettra à nouveau le même toast en file d'attente. il s'affichera pendant 7 sec (3,5 sec + 3,5 sec)
la source
Voici une classe Toast personnalisée que j'ai créée en utilisant le code ci-dessus:
la source
Si vous avez besoin d'un long Toast, il existe une alternative pratique, mais cela nécessite que votre utilisateur clique sur un bouton OK pour le faire disparaître. Vous pouvez utiliser un AlertDialog comme celui-ci:
Si vous avez un long message, il y a de fortes chances que vous ne sachiez pas combien de temps il faudra à votre utilisateur pour lire le message, donc parfois c'est une bonne idée d'exiger de votre utilisateur qu'il clique sur un bouton OK pour continuer. Dans mon cas, j'utilise cette technique lorsqu'un utilisateur clique sur une icône d'aide.
la source
Service
, où il n'y a pas d'interface utilisateur.Comme mentionné par d'autres utilisateurs, Android Toasts peut être LENGTH_LONG ou LENGTH_SHORT. Il n'y a aucun moyen de contourner cela, et vous ne devez pas non plus suivre les «hacks» publiés.
Le but de Toasts est d'afficher des informations "non essentielles" et en raison de leur effet persistant, les messages peuvent être mis hors contexte si leur durée dépasse un certain seuil. Si les toasts en stock ont été modifiés de manière à pouvoir s'afficher plus longtemps que LENGTH_LONG, le message persiste à l'écran jusqu'à la fin du processus de l'application, car des vues de toasts sont ajoutées au WindowManager et non à un ViewGroup dans votre application. Je suppose que c'est pourquoi il est codé en dur.
Si vous devez absolument afficher un message de style toast de plus de trois secondes et demie, je recommande de créer une vue attachée au contenu de l'activité, de cette façon, elle disparaîtra lorsque l'utilisateur quittera l'application. Ma bibliothèque SuperToasts traite de ce problème et bien d'autres, n'hésitez pas à l'utiliser! Vous seriez très probablement intéressé à utiliser SuperActivityToasts
la source
Utilisez simplement SuperToast pour faire un toast élégant dans n'importe quelle situation. Rendez votre toast coloré . Modifiez la couleur de votre police et sa taille . J'espère que ce sera tout en un pour vous.
la source
Pourquoi manger Toast, quand vous pouvez avoir l'intégralité du Snackbar : https://developer.android.com/reference/android/support/design/widget/Snackbar.html
Snackbar> Toast, Toast personnalisé, Crouton
la source
Voici une méthode très simple qui a fonctionné pour moi:
for (int i=0; i < 3; i++) { Toast.makeText(this, "MESSAGE", Toast.LENGTH_SHORT).show(); }
La durée de LENGTH_SHORT est de 2 secondes et LENGTH_LONG de 3,5 secondes. Ici, le message toast sera affiché pendant 6 secondes car il est enfermé dans une boucle for. Mais un inconvénient de cette méthode est qu'après chaque 2 secondes, un petit effet de décoloration peut se produire. mais ce n'est pas très visible. J'espère que c'est utile
la source
L'utilisateur ne peut pas personnaliser la durée du Toast. car la fonction scheduleTimeoutLocked () de NotificationManagerService n'utilise pas la durée du champ. le code source est le suivant.
la source
Utilisez Crouton, c'est une bibliothèque Toast très flexible.
Croûton
Vous pouvez l'utiliser comme des toasts:
ou vous pouvez même aller un peu plus loin et le personnaliser davantage, comme régler l'heure à l'infini! par exemple ici, je veux afficher un message toast jusqu'à ce que l'utilisateur le reconnaisse en cliquant dessus.
Disposition personnalisée qui sera gonflée pour le toast.
la source
La durée du toast peut être piratée à l'aide d'un thread qui exécute le toast exclusivement. Cela fonctionne (exécute le toast pendant 10 secondes, modifiez le sommeil et le ctr à votre convenance):
la source
Un toast avec un arrière-plan et une vue personnalisés a fait l'affaire pour moi. Je l'ai testé sur la tablette Nexus 7 et je n'ai remarqué aucune animation de fondu de fondu lors du bouclage. Voici l'implémentation:
Voici le texte personnalisé utilisé dans le code ci-dessus:
@ drawable / fragment_background fait que mes toasts ont un coin arrondi comme dans la version kitkat. Vous pouvez également ajouter d'autres vues dans le fichier. Toute modification pour amélioration et commentaires sont encouragés car je prévois de mettre en œuvre cela dans mon application en direct.
la source
Planifiez un compte à rebours jusqu'à une date ultérieure, avec des notifications régulières à intervalles réguliers. Exemple d'affichage d'un compte à rebours de 30 secondes dans un champ de texte:
la source
Ce texte disparaîtra dans 5 secondes.
Edit: Comme Itai Spector en commentaire l'a dit, il s'affichera environ 3,5 secondes, alors utilisez ce code:
la source
Non, et la plupart / tous les hacks répertoriés ici ne fonctionnent plus dans Android 9. Mais il existe une bien meilleure solution: si votre message doit traîner, utilisez une boîte de dialogue.
la source
Une approche très simple pour créer un message légèrement plus long est la suivante:
Notez que l'exemple ci-dessus élimine l'option LENGTH_SHORT pour garder l'exemple simple.
Vous ne voudrez généralement pas utiliser un message Toast pour afficher des messages pendant de très longs intervalles, car ce n'est pas le but prévu de la classe Toast. Mais il y a des moments où la quantité de texte que vous devez afficher peut prendre plus de 3,5 secondes à l'utilisateur pour lire, et dans ce cas, une légère prolongation du temps (par exemple, à 6,5 secondes, comme indiqué ci-dessus) peut, à l'OMI, être utile et conforme à l'usage prévu.
la source
Définit le toast à une période spécifique en milli-secondes:
la source
la source
Après avoir échoué avec toutes les solutions disponibles, j'ai finalement eu une solution de contournement en utilisant la récursivité.
Code:
la source
Une solution très simple à la question. Deux ou trois fois, Toast durera plus longtemps. C'est le seul moyen de contourner.
la source
Vous pouvez définir le temps souhaité en millisecondes dans la
Toast.makeText();
méthode comme ceci:la source