トーストは、操作に関する簡単なフィードバックを小さなポップアップに表示します。 トーストでは、メッセージの表示に必要なスペースのみを使用します。現在のアクティビティは表示されたままになり、引き続き操作できます。トーストはタイムアウト後に自動的に消えます。
たとえば、メールで [Send] をクリックすると、次の画面キャプチャのように [Sending message...] というトーストが表示されます。

トーストはクリックできません。ユーザーがステータス メッセージに応答する必要がある場合は、通知を使用することを検討してください。
基本的な使い方
まず、makeText()
メソッドのいずれかで Toast
オブジェクトをインスタンス化します。このメソッドに、アプリの Context
、テキスト メッセージ、トーストの表示期間という 3 つのパラメータを指定すると、適切に初期化された Toast オブジェクトが返されます。次の例に示すように、show()
を使用してトースト通知を表示できます。
Kotlin
val text = "Hello toast!" val duration = Toast.LENGTH_SHORT val toast = Toast.makeText(applicationContext, text, duration) toast.show()
Java
Context context = getApplicationContext(); CharSequence text = "Hello toast!"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show();
この例には、ほとんどのトースト通知に必要な要素がすべて示されています。 他に必要なものはほとんどありません。ただし、トーストの位置を変えたり、単純なテキスト メッセージの代わりに独自のレイアウトを使用したりすることはできます。 以降のセクションでその方法について説明します。
また、次のようにメソッドを連結すると、Toast オブジェクトを保持せずに済みます。
Kotlin
Toast.makeText(context, text, duration).show()
Java
Toast.makeText(context, text, duration).show();
トーストの配置
標準的なトースト通知は、画面下部の中央付近に表示されます。
この位置は setGravity(int, int, int)
メソッドで変更できます。このメソッドでは 3 つのパラメータ(Gravity
定数、X 位置のオフセット、Y 位置のオフセット)を指定できます。
たとえば、トーストを左上隅に表示する場合は、Gravity を次のように設定します。
Kotlin
toast.setGravity(Gravity.TOP or Gravity.LEFT, 0, 0)
Java
toast.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
位置を右に移動する場合は、2 番目のパラメータの値を大きくします。 下に移動するには、最後のパラメータの値を大きくします。
カスタムのトーストビューの作成
簡単なテキスト メッセージでは物足りない場合は、トースト通知用にレイアウトをカスタマイズできます。カスタム レイアウトを作成するには、XML またはアプリのコードで View レイアウトを定義して、ルート View
オブジェクトを setView(View)
メソッドに渡します。
次のスニペットには、トースト通知用にカスタマイズされたレイアウトが含まれています(layout/custom_toast.xml
として保存されます)。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/custom_toast_container" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="8dp" android:background="#DAAA" > <ImageView android:src="@drawable/droid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="8dp" /> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#FFF" /> </LinearLayout>
LinearLayout 要素の ID に「custom_toast_container」が指定されていることに注目してください。 レイアウトをインフレートするには、次に示すように、この ID と XML レイアウト ファイル「custom_toast」の ID を使用する必要があります。
Kotlin
val inflater = layoutInflater val container: ViewGroup = findViewById(R.id.custom_toast_container) val layout: ViewGroup = inflater.inflate(R.layout.custom_toast, container) val text: TextView = layout.findViewById(R.id.text) text.text = "This is a custom toast" with (Toast(applicationContext)) { setGravity(Gravity.CENTER_VERTICAL, 0, 0) duration = Toast.LENGTH_LONG view = layout show() }
Java
LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.custom_toast, (ViewGroup) findViewById(R.id.custom_toast_container)); TextView text = (TextView) layout.findViewById(R.id.text); text.setText("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();
まず、getLayoutInflater()
(または getSystemService()
)を使用して LayoutInflater
を取得し、その後で inflate(int, ViewGroup)
を使用して XML からレイアウトをインフレートします。最初のパラメータはレイアウトのリソース ID、2 番目のパラメータはルート View です。このインフレートされたレイアウトを使用すると、レイアウト内の View オブジェクト数を増やすことができます。これで、ImageView 要素と TextView 要素のコンテンツをキャプチャして定義できます。最後に、Toast(Context)
を使用して新しい Toast を作成し、トーストのプロパティ(Gravity、期間など)を設定します。さらに、setView(View)
を呼び出して、インフレートしたレイアウトを渡します。これで、show()
を呼び出してカスタム レイアウトのトーストを表示できます。
注: setView(View)
を使用してレイアウトを定義する場合を除き、Toast のパブリック コンストラクタは使用しないでください。使用するカスタム レイアウトがない場合は、makeText(Context, int, int)
を使用して Toast を作成する必要があります。