Android: как установить цвет текста тоста - PullRequest
49 голосов
/ 14 июля 2011

Я показываю тостовое сообщение как результат оператора if, используя следующий код:

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

Оно отображается белым текстом на белом фоне, поэтому его невозможно прочитать!У меня вопрос, как я могу изменить цвет текста тоста?

Ответы [ 6 ]

122 голосов
/ 24 февраля 2012

Этого можно добиться очень легко, не создавая пользовательский макет, изменив стандартное значение Toast:

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();

Макет, используемый стандартным видом тоста, можно найти в Android SDK:

$ ANDROID-SDK $ / платформы / android-8 / данные / res / layout / transient_notification.xml

22 голосов
/ 14 июля 2011

Вы можете создать пользовательский Toast view в соответствии с вашими требованиями.См. Раздел «Создание пользовательского представления тостов» по ​​адресу http://developer.android.com/guide/topics/ui/notifiers/toasts.html

15 голосов
/ 14 июля 2011

Возможно, вы захотите создать собственный тост

<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();

Источник

7 голосов
/ 11 марта 2015

Самый простой способ изменить цвет фона тоста и цвет фона текста тоста:

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();
4 голосов
/ 04 августа 2014

Вы также можете использовать SpannableString. Он также может окрашивать части строки.

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();
3 голосов
/ 30 июня 2017

Попробуйте использовать библиотеку Toasty.Это действительно легко использовать - https://github.com/GrenderG/Toasty

enter image description here

...