Toastの表示位置を変更するコードを紹介します。
通常何も指定せずにToastを表示した場合画面の下部にToastの吹き出しが表示されます。
画面にキーボードが表示されていると下部のToastは見えにくいため、Toastの表示位置を変更したい場合があります。
プロジェクトの設定
ADTのプロジェクト作成ウィザードを用いてAndroidアプリケーションのプロジェクトを作成します。
- Project name: CustomToast
- Application name: CustomToast
- Package name: com.iPentec.customtoast
- Minimum Required SDK: "API 8: Android 2.2 (Froyo)"
- Target SDK: "API 17: Android 4.2 (Jelly Bean)"
- Compile With: "API 17: Android 4.2 (Jelly Bean)"
- Theme: "Holo Light with Dark Action Bar"
- Activity: MainActivity
UI
MainActivityのレイアウトファイルを開きます。画面にボタンを一つ配置します。
ボタンを選択し"On Click"プロパティを編集します。値は"button1_click"としました。
コード
以下のコードを記述します。
MainActivity.java
package com.iPentec.customtoast;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.*;
import android.widget.*;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void button1_click(View view){
Toast ts = Toast.makeText(this, "テストメッセージ", Toast.LENGTH_LONG);
ts.setGravity(Gravity.CENTER, 0, 0);
ts.show();
}
}
解説
Toastの表示に関しては
こちらの記事を参照してください。
ts.setGravity(Gravity.CENTER, 0, 0);
がToastの位置を指定するコードです。第一引数にGravity.CENTERを指定しているため、Toastは中央に表示されます。第二引数はX方向のオフセット、第三引数はY方向のオフセットです。今回は両方とも0にしてあるため中央に表示されます。表示位置を左右にずらしたい場合は第二引数に、上下にずらしたい場合は第三引数に値を与えます。
Gravityは以下の値名を持ちます。
値名 | 値 | 意味 |
AXIS_CLIP | 0x00000008 | |
AXIS_PULL_AFTER | 0x00000004 | |
AXIS_PULL_BEFORE | 0x00000002 | |
AXIS_SPECIFIED | 0x00000001 | |
AXIS_X_SHIFT | 0x0000000 | |
AXIS_Y_SHIFT | 0x00000004 | |
BOTTOM | 0x00000050 | 下部に表示 |
CENTER | 0x00000011 | 中央に表示 |
CENTER_HORIZONTAL | 0x00000001 | |
CENTER_VERTICAL | 0x00000010 | |
CLIP_HORIZONTAL | 0x00000008 | |
CLIP_VERTICAL | 0x00000080 | |
DISPLAY_CLIP_HORIZONTAL | 0x01000000 | |
DISPLAY_CLIP_VERTICAL | 0x10000000 | |
END | 0x00000005 | |
FILL | 0x00000077 | |
FILL_HORIZONTAL | 0x00000007 | |
FILL_VERTICAL | 0x00000070 | |
HORIZONTAL_GRAVITY_MASK | 0x00000007 | |
LEFT | 0x00000003 | 左端に表示 |
NO_GRAVITY | 0x00000000 | |
RELATIVE_HORIZONTAL_GRAVITY_MASK | 0x00000007 | |
RELATIVE_LAYOUT_DIRECTION | 0x00800000 | |
RIGHT | 0x00000005 | 右端に表示 |
START | 0x00800003 | |
TOP | 0x00000030 | 上部に表示 |
VERTICAL_GRAVITY_MASK | 0x00000070 | |
実行結果
上記のコードを実行し、ボタンをタップすると下図の画面が表示されます。
他の例
例1
button1_clickメソッドを以下の内容に置き換えます。Gravity.TOPを指定しているため画面の上部にToastが表示されます。またY方向のオフセットが指定されています。
public void button1_click(View view){
Toast ts = Toast.makeText(this, "テストメッセージ", Toast.LENGTH_LONG);
ts.setGravity(Gravity.TOP, 0, 160);
ts.show();
}
実行結果
上記のコードの場合、ボタンをタップすると下図の画面となります。
例2
public void button1_click(View view){
Toast ts = Toast.makeText(this, "テストメッセージ", Toast.LENGTH_LONG);
ts.setGravity(Gravity.CENTER, -80, 0);
ts.show();
}
実行結果
上記のコードの場合、ボタンをタップすると下図の画面となります。
Toastの位置の変更ができました。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-10
作成日: 2013-03-14