AndroidでToastの背景色を変える方法
実装方法は大枠にわけて2つあります。
- Javaコードでview.setBackgroundColorを使用して背景色を指定。
- Xmlコードでtoast_layout.xmlを作成して、その中で背景色を指定。
それぞれにメリット/デメリットがありますので見ていきましょう。
実装方法 | メリット | デメリット |
---|---|---|
Javaコードでview.setBackgroundColorを使用して背景色を指定 | Javaコード内で処理が完結のため工数がかからない | toastのJavaコードをスーパークラスで定義しない場合において、 他画面でもtoastを使用する際、同様のロジックが他のactivity、fragmentに存在することになり保守が煩雑になる。 |
Xmlコードでtoast_layout.xmlを作成して、その中で背景色を指定。 | toastを複数画面で用いてかつtoastのレイアウトが共通な場合において、レイアウト(Xml)ファイルを共通化することが出来るためtoastのレイアウト保守が容易になる。 | 管理するレイアウト(Xml)ファイルが増えることでアプリ容量がレイアウトファイル分だけ増加する。 |
本稿では、まず最初にJavaコード内でview.setBackgroundColorを使用して、
背景色を変更する方法を説明します。
JavaコードでsetBackgroundColorを使用する方法
public void onClick(View v) {
Toast t = Toast.makeText(v.getContext(), "toast の背景色を変更", Toast.LENGTH_LONG);
View v = t.getView();
//
v.setBackgroundColor(Color.rgb(255,20,147));
t.show();
}
Xmlコードでlayoutファイルを作成して背景色を指定する方法
次に、Xmlコードでtoast_layout.xmlを作成して背景色を変更する方法を説明します。
まずは、Javaコードにて背景色を変えたいtoastにレイアウトファイルを設定します。
public void onClick(View v) {
// インフレータを取得する
LayoutInflater inflater = getLayoutInflater();
// カスタムToast用のViewを取得する
// R.layout.toast_layoutの内容は口述
View layout = inflater.inflate(R.layout.toast_layout, null);
// TextViewを取得して任意のテキストを設定する
TextView text = (TextView) layout.findViewById(R.id.text);
text.setText("Toastのカスタマイズ。");
// Toastにカスタマイズしたレイアウトを設定して表示する
Toast toast = new Toast(this);
toast.setView(layout);
toast.show();
break;
}
}
}
Xmlコードのandroid:backgroundにて背景色を設定する
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff9900"
android:orientation="horizontal"
android:padding="10dip" >
<textview android:id="@+id/text"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:textcolor="#000000">
</textview></imageview>
スポンサーリンク