54 votes

Android : Comment définir la couleur du texte d'un toast ?

J'affiche un message de toast comme résultat d'une instruction if en utilisant le code suivant :

Toast.makeText(getBaseContext(), "Please Enter Price", Toast.LENGTH_SHORT).show();

Il s'agit d'un texte blanc sur fond blanc, qui ne peut donc pas être lu ! Ma question est la suivante : comment puis-je changer la couleur du texte du toast ?

0 votes

J'espère este vous aidera. Vérifiez ce lien.

4voto

Clas Points 11

Vous pouvez également utiliser SpannableString . Il peut également colorer certaines parties de la chaîne.

SpannableString spannableString = new SpannableString("This is red text");
spannableString.setSpan(
                            new ForegroundColorSpan(getResources().getColor(android.R.color.holo_red_light)),
                            0,
                            spannableString.length(),
                            0);
Toast.makeText(this, spannableString, Toast.LENGTH_SHORT).show();

0 votes

Au-dessus de la valeur unique getColor(int) est dépréciée, il est donc préférable d'utiliser la méthode de la valeur double comme getColor(int,theme) .EX: : getColor(Android.R.color.holo_red_light,getTheme())

2voto

Mohamed Sajjadh Points 16

Vous pouvez essayer ceci si vous ne souhaitez pas utiliser de bibliothèques personnalisées

 Toast toast=Toast.makeText(getApplicationContext(),"This is advanced toast",Toast.LENGTH_LONG);
        View view=toast.getView();
        TextView  view1=(TextView)view.findViewById(android.R.id.message);
        view1.setTextColor(Color.YELLOW);
        view.setBackgroundResource(R.color.colorPrimary);
        toast.show();

0voto

Anubhav Points 364

Voici un exemple en Kotlin, montrant comment vous pouvez changer la couleur de fond d'un toast et la couleur de son texte :

val toast = Toast.makeText(context, text, Toast.LENGTH_SHORT)
toast.view.background.setColorFilter(ContextCompat.getColor(context, 
R.color.white), PorterDuff.Mode.SRC_IN)
val textView = toast.view.findViewById(android.R.id.message) as TextView
textView.setTextColor(ContextCompat.getColor(context, R.color.black))
toast.show()

0voto

Boug Points 4108

La solution avec la mise en place d'un view en Toast est déprécié pour l'API 30 et les suivantes.

La documentation dit

apps * ciblant le niveau d'API {@link Build.VERSION_CODES#R} ou supérieur qui sont en arrière-plan * Les toasts personnalisés ne seront pas affichés.

L'alternative est

Toast.makeText(applicationContext,
                HtmlCompat.fromHtml("<font color='red'>custom toast message</font>", HtmlCompat.FROM_HTML_MODE_LEGACY),
                Toast.LENGTH_LONG).show()

La balise de couleur Html peut également être <font color='#ff6347'>

Pour chaque modification qui concerne le texte affiché, la solution ci-dessus serait suffisante. Vous pouvez par exemple rendre le texte en gras en insérant <b>my text</b> ou vous voulez peut-être changer le font-family avec <font font-family='...'> my text </font> Pour tous ces changements, cette solution sera suffisante.

Si vous souhaitez cependant modifier le conteneur avec des propriétés telles que background-color la seule alternative est d'utiliser Snackbar . View ne peut pas être modifié pour Toast plus.

0voto

https://developer.Android.com/guide/topics/ui/notifiers/toasts?hl=es-419#java

Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X