Android通過XML來定義Menu

如果是xml形式的話。在onOptionsItemSelected裏面 switch{ case(R.id.XXX)}就可以對應你的各個menu的點擊事件。如果是代碼創建,那就是你創建時的id。
例如 menu.add(0, 1, 1, "XXX"); 這是 一樣在onOptionsItemSelected裏面switch{
case 1: //TODO(這是就是這個菜單項的點擊事件了。) }

Activity的父類裏面已經封裝好了menu方法。你只需要重寫父類的onCreateOptionMenu()方法和onOptionsItemSelected()即可。

原文:http://blog.csdn.net/jaycee110905/article/details/8765082

利用LayoutInflater infalter = getLayoutInflater();從XML文件中獲取Layout的樣式。在Menu中也可以採用類似的方式。我們在onCreateOptionsMenu()中如下處理:

  1. public boolean onCreateOptionsMenu(Menu menu) {  
  2.         MenuInflater menuInflater = new MenuInflater(getApplication());  
  3.         menuInflater.inflate(R.menu.chapter11_menu, menu);  
  4.         return super.onCreateOptionsMenu(menu);  
  5.     }  

其中我們在res/menu目錄下面創建Menu的xml文件chapter11_menu.xml。我們通過下面的例子看看Menu XML文件如何編寫:

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- Menu對應一個Menu的格式 -->  
  3. <menu  xmlns:android="http://schemas.android.com/apk/res/android">  
  4.      <!-- 我們分三種情況進行設置 -->  
  5.      <!-- Part 1 :普通情況,我們增加三個MenuItem,item對應MenuItem的格式。item中的android:id直接就是item的ID,即我們menu.add()中的第二個參數。 -->  
  6.     <item android:id="@+id/c11_close"  
  7.      <!-- title爲顯示的文字,即menu.add()中的第三個參數的第四個參數,可採用@string/xxx -->  
  8.       android:title="Close"  
  9.      <!-- orderInCategory表明擺放的順序,不一定從0還是計算,但必須大於等於0,數值小的位於前,如果數值一樣,在我們這個例子中3又兩個值,則安順序擺放,此相當於menu.add()中的第三個參數order。當然我們建議從0,1,2,3....這樣依次給出,並且與XML行文的順序一致。 -->  
  10.       android:orderInCategory = "3"  
  11.      <!-- icon設置圖標,不言自喻 -->  
  12.       android:icon="@drawable/android_focused" />  
  13.      <item android:id="@+id/c11_no_icon"  
  14.        android:orderInCategory = "2"  
  15.        android:title = "Sans Icon" />  
  16.      <item android:id="@+id/c11_disabled"  
  17.        android:orderInCategory="4"  
  18.        android:enabled="false"  
  19.        android:title="Disabled" />  
  20.      <!-- Part 2 :Group的情況,我們在Group中放入2個item,如果我們要顯示3.4的方式,可以增加group的參數android:checkableBehavior來設置,single表示radio box,all表示checkbox,none表示checkable=flase。group中的android:id就是Gourp_ID,即menu.add()中的第一個參數。在這個例子中,我們設置這個group不可視,如果需要顯示,代碼爲:menu.setGroupVisible(R.id.c11_other_stuff, true);-->  
  21.       <group android:id="@+id/c11_other_stuff"  
  22.        <!-- Item由android:orderInCategory來設置item的順序,在Group中我們可以通過menuCategory來設置另一個category,裏面的順序和default Category是不方在一起比較,例如這裏麼我們給出0和5,如圖所示,在顯示完default Category,再顯示這個sendonary的內容。 -->  
  23.         android:menuCategory="secondary"  
  24.         android:checkableBehavior="single"  
  25.         android:visible="false" >  
  26.            <item android:id="@+id/c11_later"  
  27.              android:orderInCategory="0"  
  28.              android:title="2nd-To-Last" />  
  29.            <item android:id="@+id/last"  
  30.               android:orderInCategory="5"  
  31.              android:title="Last" />  
  32.      </group>  
  33.      <!-- Part 3 :子menu的設置,將在menuItem內部嵌套一個<Menu>,在這個例子中的子菜單,試驗了快捷鍵的方式 -->  
  34.      <item android:id="@+id/c11_submenu"  
  35.        android:orderInCategory="3"  
  36.        android:title="A submenu" >  
  37.            <menu>  
  38.                <item android:id="@+id/c11_non_ghost"  
  39.                  android:title="Non-Ghost"  
  40.                  android:visible="true"  
  41.                  android:alphabeticShortcut="n" />   
  42.                <item android:id="@+id/c11_ghost"  
  43.                  android:title="Ghost"  
  44.                  android:visible="true"  
  45.                  android:alphabeticShortcut="g" />  
  46.            </menu>  
  47.       </item> <!-- end of Part 3 -->  
  48. </menu>  

 

發佈了12 篇原創文章 · 獲贊 21 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章