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.

128voto

XGouchet Points 4254

Vous pouvez y parvenir très facilement, sans créer une mise en page personnalisée, en modifiant le modèle Toast par défaut :

Toast toast = Toast.makeText(this, resId, Toast.LENGTH_SHORT);
TextView v = (TextView) toast.getView().findViewById(android.R.id.message);
v.setTextColor(Color.RED);
toast.show();

Vous pouvez trouver la disposition utilisée par la vue des toasts par défaut dans le SDK Android :

$Android-SDK$/platforms/Android-8/data/res/layout/transient_notification.xml

63 votes

Vous pouvez également faire toast.getView().setBackgroundColor(Color.RED); pour définir la couleur de fond de l'ensemble de la zone de Toast.

2 votes

Sur mon téléphone, cela ajoute un fond derrière le fond gris par défaut, cependant.

0 votes

@Chris Belle trouvaille ! Cependant, cela a donné des coins à mon Toast. Ceci a permis de garder la forme intacte : toast.getView().setBackgroundTintList(ColorStateList.valueOf(Color.RED)) ;

22voto

Mandel Points 865

Vous pouvez créer un Toast view pour répondre à vos besoins. Voir la section intitulée "Création d'une vue personnalisée des toasts" à l'adresse suivante http://developer.Android.com/guide/topics/ui/notifiers/toasts.html

16voto

BrainCrash Points 3757

Vous pouvez créer un Toast personnalisé

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/toast_layout_root"
          android:orientation="horizontal"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:padding="10dp"
          android:background="#DAAA"
          >
<ImageView android:id="@+id/image"
           android:layout_width="wrap_content"
           android:layout_height="fill_parent"
           android:layout_marginRight="10dp"
           />
<TextView android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="fill_parent"
          android:textColor="#FFF"
          />
</LinearLayout>

-

LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout,
                           (ViewGroup) findViewById(R.id.toast_layout_root));

ImageView image = (ImageView) layout.findViewById(R.id.image);
image.setImageResource(R.drawable.android);
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Hello! This is a custom toast!");

Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();

Source :

9voto

Akshay Shinde Points 857

Le moyen le plus simple de modifier la couleur de fond d'un toast et la couleur de fond du texte d'un toast :

View view;
TextView text;
Toast toast;
toast.makeText(this, resId, Toast.LENGTH_SHORT);
view = toast.getView();
text = (TextView) view.findViewById(android.R.id.message);
text.setTextColor(getResources().getColor(R.color.black));
text.setShadowLayer(0,0,0,0);
view.setBackgroundResource(R.color.white);
toast.show();

5voto

Anatoliy Shuba Points 104

Essayez d'utiliser la bibliothèque Toasty. Elle est très facile à utiliser. https://github.com/GrenderG/Toasty

enter image description here

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