菜單是Android 系統中重要的使用者接口,菜單Menu 不同于Tab 。
菜單可分為
1.選項菜單,如圖
建立選項菜單,需要重寫Activity 的onCreateOptionsMenu(). Android系統的選項菜單最多顯示6個菜單項.如果是5個,上面一行顯示兩個菜單項,下面一行顯示3個菜單項
如果菜單項的标題過長,系統會顯示三行兩列的選項菜單.

處理選項菜單單擊事件的方法有3種,
(1) 設定菜單項的單擊事件,通過MenuItem 接口的setOnMenuItemClickListener
(2). 選項選中事件 ,通過Activity類 的onOptionItemSelected 方法
(3) 通過Activity 類的 onMenuItemSelected 方法,
注意:如果使用了菜單項的單擊事件(即第一種方法),後兩種方法都失效了,并且與菜單項關聯的Activity 将失效,也就是說系統将會調用單擊事件方法,将不會顯示與菜單項關聯的Activity
---------------------
以下介紹上下文菜單與子菜單
上下文菜單的顯示效果和子菜單相同點: 也分為菜單頭和菜單項,在菜單項上不能顯示圖像,但可以在菜單頭顯示圖像,上下文菜單和子菜單都不能嵌套子菜單
2. 帶圖像、複選框、選擇項按鈕的菜單,即子菜單
Menu接口的addSubMenu() 用來添加子菜單, 該方法定義如下:
SubMenu addSubMenu(final CharSequence title)
SubMenu addSubMenu(final int titleRes)
SubMenu addSubMenu(final int groupId, final int itemId, int order, final CharSequence title)
SubMenu addSubMenu(int groudId, int itemId, int order, int titleRes)
3. 與任意View對象關聯的 ContextMenu 上下文菜單,它相當于PC上的右鍵菜單
要觸發上下文菜單,須通過長按某個視圖實作。
(1)建立上下文菜單,需要重寫Activity 的onCreateContextMenu()方法
該方法定義如下: public void onCreateContextMenu(ContextMenu menu ,View view ,ContextMenuInfo menuInfo)
上下文菜單與其他菜單不同的是,必須注冊到指定的View才能顯示,注冊上下文菜單可以使用Activity 的registerForContextMenu()方法實作
例如 TextView tv = (TextView)findViewById(R.id.tv);
registerForContextMenu(tv); //注冊上下文菜單
在上下文菜單中可以添加子菜單
(2) 上下文菜單項的單擊事件有3種: 可以使用單擊事件、 onMenuItemSelected方法、 Activity類的onContextItemSelected方法
====================
在Activity 類還有一些與菜單相關的事件,如:
public boolean onPrepareOptionsMenu(Menu menu) 在顯示選項菜單之前被調用,一般用來即将顯示的選項菜單
public boolean onMenuOpened(int featuredId, Menu menu) 在顯示選項菜單之前被調用,在onPrepareOptionsMenu()方法之後調用
public void onOptionsMenuClosed(Menu menu) 在關閉選項菜單時被調用
public void onContextMenuClosed(Menu menu) 在關閉上下文菜單時被調用
具體代碼請參見 ch04_menu 工程