ポップアップウインドウの表示方法

PopupWindowクラスを使うと画面上にビューを浮かび上らせて表示できます。

このビューはダイアログと違い、表示したとしてもアプリ全体のフォーカスを奪うことはなく、特定のタイミングで表示位置を変えたり、消したりすることが可能です。

PopupWindowに表示するビューの作成

次のようにポップアップさせたいビューのレイアウトを例えばpopup_window.xmlなどの名前で作成します。

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/time_popup_window" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" >

    <TextView
        android:id="@+id/popup_text" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Popup" 
        android:textSize="15sp" />

</LinearLayout>

この例ではTextViewを1つ持つレイアウトを作りました。

PopupWindowの表示

レイアウトファイルからPopupWindowを表示させるには次のようなコードを書きます。

public class MainActivity extends Activity
{
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button popupButton = (Button)findViewById(R.id.popup_button);
            //ポップアップを表示するボタン
        popupButton.setOnClickListener(new View.onClickListener()
        {
            public void onClick(View v) 
            {
                PopupWindow popupWin;
                
                /*ポップアップに表示するレイアウトの設定*/
                LinearLayout popLayout
                = (LinearLayout)getLayoutInflater().inflate(
                        R.layout.popup_window, null);
                TextView popupText 
                = (TextView)popLayout.findViewById(R.id.popup_text);
                popupText.setText("Popup Text");

                /*ポップアップの作成*/
                popupWin = new PopupWindow(this);
                popupWin.setWindowLayoutMode(
                        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                popupWin.setContentView(popLayout);
                popupWin.setBackgroundDrawable(null);
                popupWin.showAsDropDown(v, 0, 0);
                    //ボタンの下にポップアップを表示
            }
        });

        Button closePopupButton = (Button)findViewById(R.id.close_popup_button);
            //ポップアップを消すボタン
        closePopupButton.setOnClickListener(new View.onClickListener()
        {
            public void onClick(View v) 
            {
                popupWin.dismiss();
                    //ポップアップを消す。
            }
        }
    }
}

この例ではポップアップを表示するボタンと消すボタンの2つを用意し、表示ボタンが押されたらレイアウトをもとにしてポップアップを作成しています。

また、消すボタンが押されるとポップアップが画面から消えるようにしました。

ポップアップの表示位置を変えるなどのメソッドについてはリファレンスのPopupWindowに詳しい情報があります。

関連項目
プライバシーポリシー