Android SDK提供的菜單有如下幾種:
1. 選項菜單:最常規的菜單,android中把它叫做option menu
2. 子菜單:android中點擊子菜單將彈出懸浮窗口顯示子菜單項。子菜單不支持嵌套,即子菜單中不能再包括其他子菜單。
3. 上下文菜單:android中長按視圖控件後出現的菜單,windows點擊右鍵彈出的菜單即上下文菜單
選項菜單最多只能顯示6個菜單項,超過6個時,第6個菜單項會被系統替換為一個叫“更多”的子菜單,原來顯示不下的菜單項都作為“更多”菜單的子菜單項。如下圖:
第6個菜單項自動變為“更多”
點擊“更多”顯示其他菜單項
每個菜單都包含兩個部分:
1. 建立菜單
2. 處理選項動作
"onCreateOptionsMenu" 函數即菜單列的主體。在 Android 機器或模擬器上按下硬體 的"Menu"( 菜單 ) 鍵,所彈出的菜單列即是靠 "onCreateOptionsMenu" 函數來定義。當我們在Activity 中定義了"onCreateOptionsMenu" 之後,按下"Menu"( 菜單 ) 鍵時,就會彈出相對應的菜單列。當我們在 Android 應用程序的菜單列上選擇了相應的選項後,則是依賴"onOptionsItemSelected" 函數,來負責處理菜單列中各選項所個別對應的動作。
關系可以用下圖來表示:
Android的activity已經為我們提前創建好了android.view.Menu對象,並提供了回調方法onCreateOptionsMenu(Menu menu)供我們初始化菜單的內容。該方法只會在選項菜單第一次顯示的時候被執行,如果你需要動態改變選項菜單的內容,請使用onPrepareOptionsMenu(Menu)。
public boolean onPrepareOptionsMenu(Menumenu) {//動態的修改菜單title
MenuItemitem=menu.findItem(SAVE_AS);
item.setTitle(item.getTitle()+""+i);
i++;
returnsuper.onPrepareOptionsMenu(menu);
}
代碼創建和響應最常用的選項菜單:
上面的代碼演示了添加菜單項的3種方法,下面解釋下第三種方法add(intgroupId, int itemId, int order,CharSequence title)。其中,第一個參數是組號,android中你可以給菜單分組,以便快速地操作同一組的菜單。第二個參數指定每個菜單項的唯一ID號,你可以自己指定,也可以讓系統來自動分配,在響應菜單時你需要通過ID號來判斷哪個菜單被點擊了。因此常規的做法是定義一些ID常量,但在android中有更好的方法,就是通過資源文件來引用,這個之後介紹。第三個參數代表菜單項顯示順序的編號,編號小的顯示在前面。
使用xml生成菜單:
Options_menu.xml文件
在activity中加上下面這兩句:
MenuInflaterinflater=this.getMenuInflater();
inflater.inflate(R.menu.options_menu,menu);
xml相應的菜單就會加入進去;
inflater在android中建立了從資源文件到對象的橋梁,MenuInflater即把菜單xml資源轉換為對象並添加到menu對象中,它可以通過activity的getMenuInflater()得到。我們在MainActivity中重寫onCreateOptionsMenu(...)方法。