Androidアプリ開発者のためのTips集。今回のTipsでは、“トースト(Toast)を使って情報を通知する方法”を紹介。Toastの基本的な使い方だけでなく、表示位置や見た目の変更なども併せて解説する。
用途 | 基本 |
---|---|
カテゴリ | 画面制御 |
レベル | 初級 |
動作確認環境 | Android 2.3.1(GingerBread) エミュレータにて動作確認 |
備考 | 今回のTipsは上記環境で動作確認・検証を行っています |
Toastは、アプリケーションからユーザーに対して動的に情報を表示する基本的な手段の1つだ。
「短時間で自動的に表示が終了してしまう」「ユーザーからの操作を受け付けることができない」などの理由から用途は限定されるが、一方で以下のような利点もある。
基本的なToastの表示には、Toastクラスの以下のメソッドを使用する。
public static Toast makeText(Context context, CharSequence text, int duration) public static Toast makeText(Context context, int resId, int duration)
public void show()
Toast.makeText( context, "hello world", Toast.LENGTH_SHORT ).show();
まずは、Toastを作成するためにmakeTextメソッドを呼び出す。
第1引数のcontextには、Activityクラスのオブジェクトが使用できるので、Activityクラス内でToastを使用する場合、大抵、第1引数にはthisが指定される。
第2引数には表示する文字列を渡す。これは、CharSequence型での指定を求められるが、String型を使用して問題ない。また、あらかじめ文字列リソースとして登録した文字列を表示したい場合、第2引数には“R.string.xxxxx”といったリソースIDを指定できる。
第3引数のdurationは、Toastの表示時間の指定で、Toast.LENGTH_SHORT、またはToast.LENGTH_LONGを指定する。
作成したToastを表示する際には、作成されたToastオブジェクトのshowメソッドを使用する。
通常、Toastは画面下部中央に表示されるが、setGravityメソッドによって表示位置を細かく調整できる。
public void setGravity(int gravity, int xOffset, int yOffset)
第1引数のgravityには、android.view.Gravityクラスの定数を使用する。例えば、Gravity.CENTERを指定した場合、Toastは画面中央に表示される。
gravityは“|”演算子を使って複数指定できる。
例えば、Gravity.TOP | Gravity.RIGHTと指定した場合、Toastは画面右上に表示される。
また、第2、第3引数によって、表示位置をピクセル単位で調整できる。
setViewメソッドを使用してToastに任意のビューをセットすることで、トーストの見た目を好きなように変更できる。
public void setView(View view)
ただし、Toast上にボタンやエディットテキストなどを配置しても、操作することはできない。
void customToast( Context context, String message ){ // 事前に用意した画像(droid.png)を使って // イメージビューを作成する ImageView iv1 = new ImageView(context); ImageView iv2 = new ImageView(context); iv1.setImageResource( R.drawable.droid ); iv2.setImageResource( R.drawable.droid ); // メッセージを表示するための // テキストビューを作成する TextView tv = new TextView(context); tv.setTextSize(24.0f); tv.setText( message ); // リニアレイアウト上に、 // 作成したビューを並べる LinearLayout ll = new LinearLayout(context); ll.setOrientation( LinearLayout.HORIZONTAL ); ll.setGravity( Gravity.CENTER ); ll.addView(iv1); ll.addView(tv); ll.addView(iv2); // トーストを作成し、 // 今作ったビューをセットする Toast t = new Toast(context); t.setView(ll); t.setGravity( Gravity.CENTER, 0, 0 ); t.show(); }
≫連載「Androidアプリケーション開発者のためのTips集」の目次
Copyright © ITmedia, Inc. All Rights Reserved.