Androidアプリ入門 No.30 オプションメニューの基本
オプションメニュー
オプションメニューの基本
まずは、単純にメニューを表示する。主な属性は以下となる。
引数 | 説明 |
---|---|
title | メニューのタイトル。 |
icon | メニューのアイコン。タイトルとの兵器も可能。 |
メニューの定義はres/menuフォルダに置く。今回は、res/menu/option_menu.xmlファイルを以下のように作成する。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="1番" android:icon="@drawable/ret" /> <item android:title="2番" /> <item android:title="3番" /> <item android:title="4番" /> <item android:title="5番" /> </menu>
1番〜5番のメニューがあり、1番だけアイコンを使用している。アイコンは以下のファイル。今までと同様に、解像度別にdrawable-ldpi、drawable-mdpi、drawable-hdpiにファイルを置く。ファイル名はret.pngとする。ちなみに透過pngにしてある。
main.xmlは以下。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" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="メニューのテスト" /> </LinearLayout>
最後にMainActivity.javaを以下に示す。
package sample.at; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.option_menu, menu); return true; } }
実行結果は以下のようになる。メニューボタンを押すとメニューが表示される。レイアウトは、アイテムの数に応じて自動で調整される。
オプショントメニューを表示するには、onCreateOptionsMenuメソッドをオーバーライドする。メソッドの定義は以下のようになっている。
public boolean onCreateOptionsMenu(Menu menu)
引数は以下。
引数 | 説明 |
---|---|
menu | メニューアイテムを設定するメニュー。 |
引数のmenuに実際のメニューアイテムを設定する。それは、次のMenuInflater#inflateで行っている。inflateの定義は以下。
public void inflate (int menuRes, Menu menu) ||> 引数は以下。 |*引数|*説明| |menuRes|読み込むXMLのレイアウトのリソースID。| |menu|このmenuにリソースのメニューを追加する。| ここで、メニューを6つ以上にしてみる。たとえば10個にする。option_menu.xmlを以下のようにする。 >|xml| <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="1番" android:icon="@drawable/ret" /> <item android:title="2番" /> <item android:title="3番" /> <item android:title="4番" /> <item android:title="5番" /> <item android:title="6番" /> <item android:title="7番" /> <item android:title="8番" /> <item android:title="9番" /> <item android:title="10番" /> </menu>