使い方はとっても簡単。
public void onClick(View v) { Toast.makeText(v.getContext(), "これがToastだ!", Toast.LENGTH_LONG).show(); }
簡単だけど…表示されても見えないんだよね。
私には見えなかったよ。自分で作ってるから、いつ何が表示されるのか知ってるのに見えなかったんだ。これ…使えないよね。
そんなわけで、Googleで「Toast カスタマイズ」って検索すると色々な人がToastのカスタマイズ方法を紹介してるんだけど…
カスタムレイアウトのファイルを作るとか? LayoutInflaterでViewを作るとか?
ただ色がおかしいのを直したいだけなのに、そんな面倒なことしなくていいと思うんだよね。というわけで、私はもう少し簡単に書いておくよ。
public void onClick(View v) { Toast t = Toast.makeText(v.getContext(), "これがToastだ!", Toast.LENGTH_LONG); View v = t.getView(); v.setBackgroundColor(Color.rgb(0x20, 0xA0, 0xD0)); t.show(); }
Viewの背景色を変えるだけ。
標準のToastと比べてみると、サイズもちょっと大きくなる。標準のToastはshapeで影を表示してると思うんだけど、それを背景色の設定で上書きしちゃったのかな。
ま、私にはこれで十分。レイアウト作らなくていいし。最悪Android側が仕様変更になっても、標準状態で表示されたらそれでいいし。
でも、もし標準のToastの色が変更されて、文字の色も変わったら…
気になることは一応確認しておかないとね。手抜きコードで文字の色を変更してみるよ。
public void onClick(View v) { Toast t = Toast.makeText(ctx, "これがToastだ!", duration); View v = t.getView(); v.setBackgroundColor(Color.rgb(0x20, 0xA0, 0xD0)); if (v instanceof ViewGroup) { ViewGroup g = (ViewGroup)v; for (int i = 0; i < g.getChildCount(); i++) { View c = g.getChildAt(i); if (c instanceof TextView) { ((TextView) c).setTextColor(Color.BLACK); } } } t.show(); }
まぁいいんじゃないかな。やっぱり私には、背景色の変更だけで十分だよ。