Android Studioでのオプションメニュー実装手順を記録しておく

Androidアプリ開発でよく使います。

アクションバーへのオプションメニュー実装

この方法はググればいくらでも出てきます。

でも僕はいちいちググりたくないし、
自分用に実装手順をメモしておこうと思います。

※ Android Studioでの手順

1.初めにres/menuディレクトリを作成する

大前提としてmenuフォルダが必要です。

ないならresフォルダ内に作っておいてください。

▼ このようなmenuフォルダを作る

Android Studio - ないならres/menuディレクトリを作成しておく

公式リファレンスでも「プロジェクトのres/menuディレクトリ内でXMLファイルを作成」と書いてあるし、menuという名前にするのは必須です。

ここまでは下準備の下準備

2.メニューのレイアウトXMLを作成する

先ほどのres/menuフォルダ内に作ります。

まずmenuフォルダを右クリックし、
そこから [New] = >[Menu Resouce File] をクリック

▼ 次のNew Resource Fileダイアログが現れる

Android Studio - [New] ⇒ [Menu Resouce File] をクリックすると、画像のようなNew Resource Fileダイアログが表示される。ここではmenu_main.xmlというメニューレイアウトを作成した

メニュー名は menu.xml としてもいいけど工夫します。ここではMainActivityに対してオプションメニュー実装するので menu_main.xml という区別しやすい名前にしました。

そういうルールで問題ないと考えます。

3.具体的にmenu.xmlにレイアウトを定義

ここではこんなオプションメニューを作ってみました。

  • 常時表示のアイコンメニュー1つを表示
  • その隣にドロップダウンメニュー表示
  • ドロップダウンに子メニューが2つある

言葉で書くとやはり分かりにくい…

具体的にはこんなXMLコードになりました。

▼ menu_main.xmlの内容

重要なのは showAsAction という属性です。

▼ この属性は以下のいずれかの値を持つ

  • always
    常時メニューアイテムを表示する。例えばアイコン(android:icon)が指定されていれば、アイコンだけが表示されるメニューとなる
  • never
    アクションバーにそのアイテムは表示されない。代わりに右端のオーバーフローメニューを開いたときにドロップダウン表示されるようになる
  • ifRoom
    アクションバーに表示するスペースがあれば表示し(= alwaysと同じ)、ない場合はオーバーメニューに格納する(=neverと同じ)

この属性がメニューの見た目にかなり影響します。

タイトル・アイコンは自由に設定してください。

4.Activity側でメニューアイテムを表示・制御

そしたらActivity側でオプションメニュー実装です。

端的には次2つをオーバライドします。

  • onCreateOptionMenu
  • onOptionsItemSelected

これはコードを見た方が早いです。

▼ Activity内で以下の2つを実装するコード例

この部分はあんまり言うことがありません。

作成したレイアウトXMLを onCreateOptionsMenu()  を使ってActivityに実装し、タッチされたオプションメニューアイテムの処理を onOptionsItemSelected()  でやってるだけです。

これでオプションメニューの実装は完了

5.実際のオプションメニューの見た目

こんな感じで表示できます。

▼ 初期状態でのオプションメニュー

とあるAndroidでの初期状態のオプションメニューの様子

▼ オーバーフローメニューを開いたとき

とあるAndroidアプリでのオプションメニューを開いたときの様子

オプションメニューが付くとアプリっぽくなります(笑

見た目・アイコンを工夫するとよりグッドです。

オプションメニュー実装のまとめ

最後にここまでの手順を箇条書き

  1. ないならres/menuディレクトリを作成
  2. メニューのレイアウトXMLを作成
  3. 具体的にmenu.xmlにレイアウトを定義
  4. Activity側でメニューアイテムを表示・制御

以上、Androidアプリへのオプションメニュー実装でした。

手順を踏んでいけば簡単にできます。ではまた