android菜單詳解三:操作功能表

來源:互聯網
上載者:User

建立一個操作功能表

一個操作功能表跟PC上的右鍵菜單類似.你應使用操作功能表為使用者介面上的某個部分提供動作選擇功能.在Android中,一個操作功能表會在使用者長按一個介面條目時出現.

你可以為任何View建立操作功能表,但是在 ListView中是最常用到操作功能表的.每當使用者在一個ListView項上長按,並且這個ListView註冊了操作功能表,那麼被按的 list item就會彈出操作功能表 (在連絡人應用中就示範了這個過程).
Register a ListView

activity使ListViewlist
items
單,ListViewregisterForContextMenu()如:

registerForContextMenu(getListView());

為了使view提供操作功能表,你必須為這個View向系統註冊操作功能表.調用方法 registerForContextMenu() 並傳入要快顯功能表的 View 作為參數即可.當這個View被長按時,它就會顯示一個操作功能表.

為了定義操作功能表的樣子和行為,需重寫你的activity的操作功能表回調方法:onCreateContextMenu() 和onContextItemSelected().

例如,下面是一個 onCreateContextMenu() ,使用了資源檔 context_menu.xml :

@Override<br />public void onCreateContextMenu(ContextMenu menu, View v,<br /> ContextMenuInfo menuInfo) {<br /> super.onCreateContextMenu(menu, v, menuInfo);<br /> MenuInflater inflater = getMenuInflater();<br /> inflater.inflate(R.menu.context_menu, menu);<br />}MenuInflater 被用於從一個 菜單資源inflate出一個菜單. (你也可以使用 add() 來添加功能表項目們) .回呼函數的參數中包含了使用者所選擇的View 和一個ontextMenu.ContextMenuInfo 對象,它可以提供被選擇的View的更多的資訊.你可以使用這些參數來決定哪個操作功能表應被建立.但是在這個例子中,Activity所有的操作功能表都是相同的.

然後,當使用者從操作功能表選擇一個功能表項目時,系統會調用方法 onContextItemSelected(). 下面的例子展示了如何處理被選擇的功能表項目:

@Override<br />public boolean onContextItemSelected(MenuItem item) {<br /> AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();<br /> switch (item.getItemId()) {<br /> case R.id.edit:<br /> editNote(info.id);<br /> return true;<br /> case R.id.delete:<br /> deleteNote(info.id);<br /> return true;<br /> default:<br /> return super.onContextItemSelected(item);<br /> }<br />}這些代碼與選項菜單中的例子代碼基本相同.getItemId() 從所選的功能表項目擷取菜單ID,並且使用switch語句匹配菜單ID與對應的處理.並且同於選項菜單的例子,default語句調用父類的同一方法處理未被我們處理的功能表項目.

在此例中,被選擇的View條目是一個 ListView條目.為了在選擇的一個view條目上執行相應的動作,應用程式需要知道View條目的list ID.為了獲得 list ID,程式中調用了 getMenuInfo(), 它返回一個 AdapterView.AdapterContextMenuInfo 對象,這個對象包含了條目的list ID.本地方法editNote()和deleteNote()接受這個list ID用於執行一些作.

注: 操作功能表項目不支援表徵圖或快速鍵.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.