Toastの表示位置を変更する - Android

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_CLIP0x00000008
AXIS_PULL_AFTER0x00000004
AXIS_PULL_BEFORE0x00000002
AXIS_SPECIFIED0x00000001
AXIS_X_SHIFT0x0000000
AXIS_Y_SHIFT0x00000004
BOTTOM0x00000050下部に表示
CENTER0x00000011中央に表示
CENTER_HORIZONTAL0x00000001
CENTER_VERTICAL0x00000010
CLIP_HORIZONTAL0x00000008
CLIP_VERTICAL0x00000080
DISPLAY_CLIP_HORIZONTAL0x01000000
DISPLAY_CLIP_VERTICAL0x10000000
END0x00000005
FILL0x00000077
FILL_HORIZONTAL0x00000007
FILL_VERTICAL0x00000070
HORIZONTAL_GRAVITY_MASK0x00000007
LEFT0x00000003左端に表示
NO_GRAVITY0x00000000
RELATIVE_HORIZONTAL_GRAVITY_MASK0x00000007
RELATIVE_LAYOUT_DIRECTION0x00800000
RIGHT0x00000005右端に表示
START0x00800003
TOP0x00000030上部に表示
VERTICAL_GRAVITY_MASK0x00000070

実行結果

上記のコードを実行し、ボタンをタップすると下図の画面が表示されます。

他の例

例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
iPentec all rights reserverd.