サイト移転のお知らせ:http://techbooster.org/に移転しました

PopupMenuを使う

1月 30, 2011   //   by kseto   //   ユーザインターフェース  //  1 Comment

Android 3.0(Honeycomb)では新しいUIコンポーネントとしてPopupMenuが追加されました。
PopupMenuではその名の通り、メニュー項目がポップアップ状に表示されます。

PopupMenuの詳細な使い方は続きからご覧下さい。

レイアウトファイル

今回はボタンを押した際にPopupMenuが表示されるようにしてみます。
レイアウトファイルにはPopupMenu表示用のボタンを1つ配置しておきましょう。

res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<Button
		android:id="@+id/PopupButton"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="PopupMenu" />
</LinearLayout>

メニュー項目の設定

次にPopupMenuに表示する項目を定義します。
res/menu/popup.xmlというファイルを作ります。

res/menu/popup.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item01" android:title="item01"></item>
<item android:id="@+id/item02" android:title="item02"></item>
<item android:id="@+id/item03" android:title="item03"></item>
</menu>

ソースコード

ソースコードですが、まずonCreateメソッドでPopupMenu用ボタンにクリック処理を割り当てます。

// ポップアップメニュー用ボタンにクリック処理を割り当てる
PopupButton = (Button) findViewById(R.id.PopupButton);
PopupButton.setOnClickListener(this);

次にonClickメソッドです。以下のようなコードになります。

// ポップアップメニュー用ボタンのクリック処理
@Override
public void onClick(View button) {
	
	// PopupMenuのインスタンスを作成
	PopupMenu popup = new PopupMenu(this, button);

	// popup.xmlで設定したメニュー項目をポップアップメニューに割り当てる
	popup.getMenuInflater().inflate(R.menu.popup, popup.getMenu());

	// ポップアップメニューを表示
	popup.show();

	// ポップアップメニューのメニュー項目のクリック処理
	popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
		public boolean onMenuItemClick(MenuItem item) {
			// 押されたメニュー項目名をToastで表示
			Toast.makeText(popupMenu.this, "Clicked : " + item.getTitle(),	Toast.LENGTH_SHORT).show();
			return true;
		}
	});
}

PopupMenuのインスタンスを作成したあと、先ほど定義したpopup.xmlをPopupMenuに割り当てます。
最後にpopup.showメソッドを呼び出すことによりPopupMenuが表示されます。
また、popup.setOnMenuItemClickListenerを使って、PopupMenuのメニュー項目をクリックした際に
押されたメニュー項目をToastで表示するようにしています。

(プレビュー版SDKで作成したサンプルプログラムの為、正式版SDKではAPI仕様が変更になる可能性があります)

関連する記事:

Sponsored Link

1 Comment

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です