web-dev-qa-db-ja.com

Android:トーストのテキストの色を設定する方法

次のコードを使用するifステートメントの結果としてトーストメッセージを表示しています。

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

読めないように、白い背景に白いテキストとして表示されます!私の質問は、トーストのテキストの色をどのように変更できますか?

49
super

要件に合わせてカスタムToastviewを作成できます。 http://developer.Android.com/guide/topics/ui/notifiers/toasts.html の「カスタムトーストビューの作成」というセクションを参照してください。

22
Mandel

デフォルトの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 $/platforms/Android-8/data/res/layout/transient_notification.xml

122
XGouchet

カスタムトーストを作成することもできます

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

ソース

15
BrainCrash

トーストの背景色とトーストのテキストの背景色を変更する最も簡単な方法:

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

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();
4
Claus Holst

Toastyライブラリを使用してみてください。本当に使いやすいです- https://github.com/GrenderG/Toasty

enter image description here

3
Anatoliy Shuba