バラエティに富んだメニューを(6) - xmlリソースファイルでメニューを定義する
xmlリソースファイルにメニューを定義して、これを読み込んで表示させる事ができる。
xmlリソースファイルの作成
メニューのリソースファイルを作成するには、eclipseのパッケージ・エクスプローラにてAndroidプロジェクトを選択し、 右クリックにて表示されるメニューより、「新規(W)」→「Android XML File」を選択する。
以下のようなダイアログボックスが表示されるので、
ファイル欄にxmlリソースファイルを保存するファイル名を(ここではmenu.xmlを入力)、 「What type of resource would you like to create?」の下に表示されているラジオボタンより、 「メニュー」をチェックして完了ボタンを押す。
これにより、「プロジェクトルート/res/layout/」デレクトリに、 xmlファイルが作成され、以下のような画面が表示される。
レイアウトタブで、GUIでメニュー項目を定義しても良いが、今回は「menu.xml」と表示されているタブを選択して、xmlソースを直接編集する事にする。
オプションメニューをxmlリソースファイルを使って表示する
まず、 「オプションメニュー」と「コンテキストメニュー」のメニュープログラム1 をxmlリソースファイルを使って修正してみる。
xmlリソースファイルに、以下のようにメニューの定義を記述する。
メニュープログラム1修正版(menu.xml)
MenuSample1.javaのソースコードを以下のように修正する。
メニュープログラム1修正版(MenuSample1.java)
30,31行目でinflaterを使ってxmlリソースファイルを読み込んでメニューを作成している。
40,43行目ではリソースのIDを使って、どのメニューが選択されたかを判定している。
リソースのIDが使えるので、もう定数を指定してメニューのidを定義する必要は無い。
メニューの定義をプログラムの外部に追い出す事で、以前と比べてスッキリとしたコードになっている。
xmlリソースファイルでコンテキストメニューを表示
このxmlリソースファイルをそのまま使って、今度はコンテキストメニューを表示してみる。
メニュープログラム9(MenuSample9.java)
コードは、オプションメニューとほとんど同じである。
アイコンとショートカットの指定。
xmlリソースファイルでも、アイコンとショートカットを指定する事ができる。
「アイコンとショートカット・キー」のメニュープログラム3で表示したメニューを、xmlリソースファイルを使って定義してみる。アンドロイドであらかじめ定義されているアイコンと自作アイコンとで、アイコンの指定方法が若干異なるので注意。
サブメニューの指定
サブメニューを指定するには、下記のようにitemタグの下にさらにmenuタグをネストします。
下記のコードは、「サブメニューの表示」のメニュープログラム4の例を、xmlファイルで記述したものです。