XML で Menu

Menu を XML で作成したいときは
/res に menu というフォルダを作成し、その中にxmlファイルを作成します


XML は以下のようにすればOKです
submenu を作りたいときは item の中に menu を入れてあげます。

XML リソース
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item 
    android:id="@+id/menu_item01" 
    android:title="Menu01"/>
  <group 
    android:id="@+id/menu_group01">
    <item 
      android:icon="@drawable/icon" 
      android:id="@+id/menu_item02" 
      android:title="Menu02"/>
  </group>
  <item 
    android:id="@+id/menu_item03" 
    android:title="Menu03">
    <menu>
      <item 
        android:id="@+id/submenu_item01" 
        android:title="Sub_Menu01"/>
      <item 
        android:id="@+id/submenu_item02" 
        android:title="Sub_Menu02/">
    </menu>
  </item>
</menu>

そして,
MenuInflater というクラスを使ってXMLを取得します

サンプルプログラム
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class MenuXMLTest extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }

  // Option Menu が最初に表示される時に1度だけ呼び出される
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    // MenuInflater の取得
    MenuInflater menuInflater = getMenuInflater();
    // MenuInflater から XML の取得  
    menuInflater.inflate(R.menu.menutest, menu);
    return true;
  }
}

あとは普通に onOptionsItemSelected(MenuItem item) などをオーバーライドすればアイテムが選択された際の処理などもできます

プログラムを実行すると...

こんな感じ!

参考サイト
http://developer.android.com/intl/ja/guide/topics/resources/available-resources.html#menus
http://developer.android.com/intl/ja/reference/android/view/MenuInflater.html

0 件のコメント:

コメントを投稿