使い方はとっても簡単。
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();
}
まぁいいんじゃないかな。やっぱり私には、背景色の変更だけで十分だよ。