J'affiche un message toast à la suite d'une instruction if à l'aide du code suivant:
Toast.makeText(getBaseContext(), "Please Enter Price", Toast.LENGTH_SHORT).show();
Il est affiché sous forme de texte blanc sur fond blanc, en tant que tel, il ne peut pas être lu! Ma question est, comment puis-je changer la couleur du texte du toast?
Vous pouvez créer un Toast
view
personnalisé pour répondre à vos besoins. Voir la section intitulée "Création d'une vue de toast personnalisée" sur http://developer.Android.com/guide/topics/ui/notifiers/toasts.html
Vous pouvez y parvenir très facilement, sans créer de mise en page personnalisée en modifiant 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 de toast par défaut dans le SDK Android:
$ Android-SDK $/plateformes/Android-8/data/res/layout/transient_notification.xml
Vous voudrez peut-être 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();
La façon la plus simple de modifier la couleur d'arrière-plan d'un toast et la couleur d'arrière-plan 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();
Vous pouvez également utiliser SpannableString
. Il peut également colorer des 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();
Essayez d'utiliser la bibliothèque Toasty. Il est vraiment facile à utiliser - https://github.com/GrenderG/Toasty