天天看點

Android學習筆記(34):Android菜單

android的菜單分為三種類型:選項菜單(option menu)、上下文菜單(context menu)、子菜單(sub menu)。

選項菜單(option menu):按裝置上的菜單按鈕(menu)會出現的菜單。不支援勾選标記。

上下文菜單(context menu):長按某個元件會出現的菜單。不支援菜單項圖示。

子菜單(submenu):就是子菜單。不支援菜單項圖示,不支援嵌套子菜單。

menu類用于添加菜單項和子菜單的方法是add()和addsubmenu():

menuitem add(charsequence title):添加一個菜單項

menuitem add(int groupid, int itemid, int order, int titleres):添加一個處于groudid組的菜單項

menuitem add(int titleres):添加一個菜單項

menuitem add(int groupid, int itemid, int order, charsequence title):添加一個處于groudid組的菜單項

submenu addsubmenu(int groupid, int itemid, int order, charsequence title):添加一個處于groudid組的子菜單

submenu addsubmenu(int groupid, int itemid, int order, int titleres):添加一個處于groudid組的子菜單

submenu addsubmenu(charsequence title):添加一個子菜單

submenu addsubmenu(int titleres):添加一個子菜單

(1)選項菜單的建立方法:

1、重寫activity的oncreateoptionsmenu(menu menu)方法。

2、調用menu的add()方法添加菜單項(menuitem),可以調用menuitem的seticon()方法為菜單項設定圖示。

3、重寫acitivy的onoptionsmenuselected()方法為菜單設定事件監聽。

(2)子菜單的建立方法:

1、重寫activity的oncreateoptionsmenu()方法,調用menu的addsubmenu()方法添加子菜單。

2、調用submenu的add()方法,添加子菜單項。

3、重寫oncreateitemselected()方法,為菜單設定監聽事件。

submenu類還提供了額外的方法來設定菜單頭的資訊:

submenu setheadericon(drawable icon):設定菜單頭的圖示。

submenu setheadericon(int iconres):設定菜單頭的圖示。

submenu setheadertitle(charsequence title):設定菜單頭的标題。

submenu setheadertitle(int titleres):設定菜單頭的标題。

submenu setheaderview(view view):使用view元件設定菜單頭。

(3)上下文菜單的建立方法:

1、重寫activity的oncreatecontextmenu(contextmenu, view, contextmenu.contextmenuinfo)方法,view參數設定的是觸發上下文菜單的元件。

2、調用menu的add()方法添加菜單項menuitem

3、重寫oncontextitemselected()方法,為上下文菜單設定事件監聽。

4、調用registerforcontextmenu(view)方法,為view元件注冊上下文菜單。

同樣我們可以用setheadericon()、setheadertitle()方法為上下文菜單設定圖示、标題。

(4)為菜單項設定事件監聽:

我們重寫activity的oncreateitemselected()方法來設定事件監聽,一般我們用switch方法判斷是哪個菜單項被單擊,是以我們需要為每個菜單項設定一個id,以友善判斷。

當然我們還有另一個方法就,就是為每個菜單項綁定監聽器,用setonmenuitemclicklistener()方法,但這樣做是很麻煩的,不推薦。

(5)設定單選菜單項和多選菜單項:

setcheckable(boolean checkable):設定該菜單項可否被勾選。

setgroupcheckable(int group,boolean checkable,boolean exclusive):設定group組的菜單項是否可以被勾選,如果exclu設定為true,那麼該組為單選菜單項。

(6)為菜單項設定快捷鍵(現在好像沒什麼用了):

setalphabeticshortcut(char alphachar):設定字母快捷鍵。

setnumericshortcut(char numericchar):設定數字快捷鍵。

setshortcut(char numericchar, char alphachar):同時設定兩種快捷鍵。

(7)設定與activity關聯的菜單項:

用于單擊某個菜單項時可以跳轉到其他activity。

用setintent(intent intent)方法。

(8)使用xml檔案建立菜單:

建立方法是

1.在res檔案下面的menu檔案目錄下建立菜單的xml檔案。

2.在activity的oncreateoptionsmenu()方法或oncreatecontextmenu()方法中用inflate(int menures, menu menu)方法加載對應資源。

3.重寫activity相關的事件監聽方法。

menu檔案夾下的xml有如下的規則:

1.根元素是<menu.../>,沒有多餘的屬性。

2.<group.../>将多個菜單項<item.../>包裝成一個菜單組。

可以設定如下屬性:

checkablebehavior:菜單項額選擇行為,none(不可選)、all(多選)、single(單選)。

menucategory:指定菜單項的優先級,container、system、secondary和alternative。

visible:是否可見

enable:是否可用

3.<item.../>用于定義菜單項,内部可包含<menu.../>,就成了子菜單。

可以設定的屬性如下:

android:id:設定id

android:title:設定标題

android:icon:設定圖示

android:alphabeticshortcut:設定字母快捷鍵

android:numbericshortcut:設定數字快捷鍵

android:checkable:是否可選

android:checked:是否選中

android:visible:是否可見

android:enable:是否可用

(9)彈出式菜單popupmenu

建立步驟如下:

1、new popupmenu(context context,view anchor)建立彈出式菜單,anchor參數表示觸發菜單的元件。

2、調用menuinflater的inflate()方法加載菜單資源。

3、調用popupmenu的show()方法顯示彈出式菜單。

繼續閱讀