本文執行個體講述了Android編程之菜單的實現方法。分享給大家供大家參考,具體如下:
Options Menu 當使用者按下menu button按鈕時顯示的菜單
Context Menu 當使用者長久按住螢幕,被註冊顯示操作功能表的視圖時顯示的菜單
Submenu 當使用者按下一個菜單的某個選項時彈出的子功能表
以上三種菜單也就是我們經常所說的:選項菜單,操作功能表和子功能表。
一.操作功能表
1. 實現onCreateContextMenu即可建立該菜單
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); // 載入已定義好的布局menu.xml MenuInflater inflater = getMenuInflater(); inflater.inflate(R.layout.menu, menu); // 或者用代碼來實現菜單添加 menu.setHeaderTitle("長按菜單-ContextMenu"); menu.add(0, 0, 0, "彈出長按菜單0"); menu.add(0, 1, 0, "彈出長按菜單1");}
2. 當菜單某個選項被點擊時調用該方法
@Override public boolean onContextItemSelected(MenuItem item) { // TODO Auto-generated method stub AdapterContextMenuInfo infor = (AdapterContextMenuInfo)item.getMenuInfo(); switch (item.getItemId()) { case R.id.help: return true; case R.id.addnew: }}
3. 當操作功能表關閉時調用的方法
@Override public void onContextMenuClosed(Menu menu) { // TODO Auto-generated method stub super.onContextMenuClosed(menu);}
對於這樣已經定義好的操作功能表,總得註冊到一些控制項上,這樣等我們長按住這個控制項時,才能跳出操作功能表。那該怎麼把操作功能表註冊到某些控制項上呢,第一種是實現ListView的一個監聽器
listview.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
但是操作功能表也要在該方法裡建立.
public void onCreateContextMenu(ContextMenu conMenu, View view , ContextMenuInfo info) { conMenu.setHeaderTitle("ContextMenu"); conMenu.add(0, 0, 0, "Delete this favorite!"); /* Add as many context-menu-options as you want to. */ }});
或者是直接在本活動調用registerForContextMenu(this.listView1);這裡是註冊到一個ListView上了,這樣長按ListView就能跳出操作功能表了。
二. 選項菜單
相比而言就簡單了
一樣道理只需實現onCreateoptionsMenu,onOptionsItemSelected和onOptionsMenuClosed就ok了
三. 子功能表
按理說子功能表也不難,確實如此,當實現了選項菜單,或操作功能表(在操作功能表裡也可以實現子功能表,這裡我們就舉這樣的例子),則子功能表的實現便是水到渠成。如上面的代
碼:
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); //載入已定義好的布局menu.xml MenuInflater inflater = getMenuInflater(); inflater.inflate(R.layout.menu, menu); //或者用代碼來實現菜單添加 menu.setHeaderTitle("長按菜單-ContextMenu"); menu.add(0, 0, 0, "彈出長按菜單0"); menu.add(0, 1, 0, "彈出長按菜單1"); //在這裡就可以添加實現子功能表的代碼 int base = menu.FIRST + 100; SubMenu sm = menu.addSubMenu(base, base + 1, Menu.NONE, "submenu"); sm.add(base, base + 2, base + 2, "sub item1"); sm.add(base, base + 3, base + 3, "sub item2");}
這樣子功能表便也實現了,對於它的單擊事件,只要在相應的選項菜單或者操作功能表的接聽程式裡照樣判斷執行就OK了。
希望本文所述對大家Android程式設計有所協助。