オプションメニュー(OptionsMenu)を追加する
AndroidではMenuボタンが、必ずついています。
アプリケーションの設定項目として利用するにはonCreateOptionsMenuメソッドを実装する必要があります。
サンプルコードを例に、OptionsMenuの使い方を説明します。
設定メニュー(OptionsMenu)は最大6つまで同時に表示できます。
それ以上は「その他」ボタンで統合され、List形式で表示されます。
簡単なメニューを持ったActivityを作ります。以下のコードを追加します。
1 2 3 4 5 6 7 | public boolean onCreateOptionsMenu(Menu menu){ menu.add( 0 , MENU_SELECT_A, 0 , "Menu A" ); menu.add( 0 , MENU_SELECT_B, 0 , "Menu B" ); return true ; } |
onCreateOptionsMenuメソッドはメニューの生成時に呼ばれるため、ここで引数のmenu(android.view.Menuパッケージ)に表示項目を追加・生成します。
第2引数はメニュー項目ごとの識別子です。今回は、
1 2 | public static final int MENU_SELECT_A = 0 ; public static final int MENU_SELECT_B = 1 ; |
を用意しました。実際のアプリケーションでは、メニュー数に応じて作成してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 | public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case MENU_SELECT_A: Log.d( "Menu" , "Select Menu A" ); return true ; case MENU_SELECT_B: Log.d( "Menu" , "Select Menu B" ); return true ; } return false ; } |
onOptionsItemSelectedメソッドでは、ユーザーがメニューを選択したとき、選択項目をMenuItemとして受け取ることが出来ます。
サンプルでは、MENU_SELECT_A/Bともにログ出力のみ行っています(必要な処理に置き換えて下さい)
メニューアイコンの追加
Menu.setIconを利用すると、メニューアイコンを追加できます。
1 2 3 4 | menu.add( 0 , MENU_SELECT_A, 0 , "Menu A" ) .setIcon(android.R.drawable.ic_menu_save); menu.add( 0 , MENU_SELECT_B, 0 , "Menu B" ) .setIcon(R.drawable.myIcon); |
Menu Aのように標準的なAndroidのICONを利用すればユーザーは直感的に操作できます。
Menu Bのように独自のICONを指定すれば、より運用の幅が広がるはずです。
上記のソースコードは
1 2 | MenuItem menuA=menu.add( 0 , MENU_SELECT_A, 0 , "Menu A" ); menuA.setIcon(android.R.drawable.ic_menu_save); |
アイコンの一覧表
タオソフトウェアさんがAndroid標準アイコンの一覧表を作成されています。
適切なアイコンが分からない・見つからない時は特に便利です。
ActivityのOptionsMenu関連メソッド
public void closeOptionsMenu() | メニューを閉じます(閉じられていれば何もしない) |
---|---|
public boolean onCreateOptionsMenu(Menu menu) | メニュー生成時に呼び出されます |
public boolean onOptionsItemSelected(MenuItem item) | メニュー項目を通知します |
public boolean onPrepareOptionsMenu(Menu menu) | メニューが表示される前に呼ばれます(毎回) |
public void onOptionsMenuClosed (Menu menu) | メニューを閉じるときに呼ばれます(毎回) |
public void openOptionsMenu() | メニューを開きます(開かれていたら何もしない) |
これらの中でも、よく使うのが
1 | public boolean onPrepareOptionsMenu (Menu menu) |
です。onPrepareOptionsMenuメソッドは、Menuを表示する前に必ず呼び出されるので、MenuItemの有効/無効設定やOptionsMenuの動的な変更を行うのに適したメソッドです。
onPrepareOptionsMenuメソッドの返値はOptionsMenuの表示可否フラグです。trueで表示、falseでメニュー非表示になります。
About The Author
ひつじ(mhidaka)
Software Engineerだよ。DroidKaigi Organizer / Androidと組込とRe:VIEW。techbooster主宰。mhidaka's writings http://booklog.jp/users/mhidaka 技術書典! http://techbookfest.org