XML で Menu

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


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

XML リソース
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android">  
  3.   <item   
  4.     android:id="@+id/menu_item01"   
  5.     android:title="Menu01"/>  
  6.   <group   
  7.     android:id="@+id/menu_group01">  
  8.     <item   
  9.       android:icon="@drawable/icon"   
  10.       android:id="@+id/menu_item02"   
  11.       android:title="Menu02"/>  
  12.   </group>  
  13.   <item   
  14.     android:id="@+id/menu_item03"   
  15.     android:title="Menu03">  
  16.     <menu>  
  17.       <item   
  18.         android:id="@+id/submenu_item01"   
  19.         android:title="Sub_Menu01"/>  
  20.       <item   
  21.         android:id="@+id/submenu_item02"   
  22.         android:title="Sub_Menu02/">  
  23.     </menu>  
  24.   </item>  
  25. </menu>  

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

サンプルプログラム
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.view.Menu;  
  4. import android.view.MenuInflater;  
  5. import android.view.MenuItem;  
  6.   
  7. public class MenuXMLTest extends Activity {  
  8.   @Override  
  9.   public void onCreate(Bundle savedInstanceState) {  
  10.     super.onCreate(savedInstanceState);  
  11.     setContentView(R.layout.main);  
  12.   }  
  13.   
  14.   // Option Menu が最初に表示される時に1度だけ呼び出される  
  15.   @Override  
  16.   public boolean onCreateOptionsMenu(Menu menu) {  
  17.     super.onCreateOptionsMenu(menu);  
  18.     // MenuInflater の取得  
  19.     MenuInflater menuInflater = getMenuInflater();  
  20.     // MenuInflater から XML の取得    
  21.     menuInflater.inflate(R.menu.menutest, menu);  
  22.     return true;  
  23.   }  
  24. }  

あとは普通に 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 件のコメント:

コメントを投稿