Android編程之菜單的實現方法執行個體詳解_Android

來源:互聯網
上載者:User

本文執行個體講述了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程式設計有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.