メールの問い合わせをしたときに「新着メールがn件あります。」と出てきますが、あれがToastです。
そのToastの表示方法をまとめてみました。
・一般的なToast
よく見る画面下部に表示されるToastです。
Toast.makeText(getApplicationContext(), "toast message.", Toast.LENGTH_LONG).show();3番目の引数はToastの表示時間を指定します。指定できる値は、Toast.LENGTH_LONGかToast.LENGTH_SHORTの2種類です。
・表示位置を指定したToast
Toastの表示位置を指定することもできます。
1番目の引数はGravity定数、2、3番目の引数はオフセット値です。
例えば、画面左上ちょっと下に表示したければ setGravity(Gravity.TOP | Gravity.LEFT, 0, 50) とします。
Toast toast = Toast.makeText(getApplicationContext(), "toast message.", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER, 0, 0); toast.show();Toast.setGravity()で位置を指定します。
1番目の引数はGravity定数、2、3番目の引数はオフセット値です。
例えば、画面左上ちょっと下に表示したければ setGravity(Gravity.TOP | Gravity.LEFT, 0, 50) とします。
・独自レイアウトのToast
自前で定義したレイアウトのToastです。
ダイアログのときと同様、まずはレイアウトを定義します。
xmlファイルの方はこんな感じです。
コードも基本的にはダイアログのときと同じです。
こんな感じのToastになりました。
ダイアログのときと同様、まずはレイアウトを定義します。
xmlファイルの方はこんな感じです。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/CustomToastRoot" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#60FF6633" > <ImageView android:id="@+id/ImageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/MessageTextView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/ImageView" android:layout_alignParentRight="true" android:layout_marginLeft="18dp" android:layout_toRightOf="@+id/ImageView" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout>
コードも基本的にはダイアログのときと同じです。
// xmlリソースからViewを生成するために、LayoutInflaterを取得 LayoutInflater inflater = getLayoutInflater(); // xmlリソースからViewを生成 View layout = inflater.inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.CustomToastRoot)); // CustomToastのTextViewにメッセージを設定 TextView text = (TextView) layout.findViewById(R.id.MessageTextView); text.setText("custom toast message."); // setView()でxmlリソースから生成したViewを設定し、Toastを表示 Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.TOP, 0, 180); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show();
こんな感じのToastになりました。