android菜单详解三:上下文菜单
創(chuàng)建一個上下文菜單
一個上下文菜單跟PC上的右鍵菜單類似.你應使用上下文菜單為用戶界面上的某個部分提供動作選擇功能.在Android中,一個上下文菜單會在用戶長按一個界面條目時出現.
你可以為任何View創(chuàng)建上下文菜單,但是在 ListView中是最常用到上下文菜單的.每當用戶在一個ListView項上長按,并且這個ListView注冊了上下文菜單,那么被按的 list item就會彈出上下文菜單 (在聯系人應用中就演示了這個過程).
Register a ListView
如果你的activity使用一個ListView并且你希望所有的list items都提供一個上下文菜單,應把ListView傳給方法registerForContextMenu(),例如:
registerForContextMenu(getListView());
為了使view提供上下文菜單,你必須為這個View向系統(tǒng)注冊上下文菜單.調用方法 registerForContextMenu() 并傳入要彈出菜單的 View 作為參數即可.當這個View被長按時,它就會顯示一個上下文菜單.
為了定義上下文菜單的樣子和行為,需重寫你的activity的上下文菜單回調方法:onCreateContextMenu() 和onContextItemSelected().
例如,下面是一個 onCreateContextMenu() ,使用了資源文件 context_menu.xml :
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.context_menu, menu); }MenuInflater 被用于從一個 菜單資源inflate出一個菜單. (你也可以使用 add() 來添加菜單項們) .回調函數的參數中包含了用戶所選擇的View 和一個ontextMenu.ContextMenuInfo 對象,它可以提供被選擇的View的更多的信息.你可以使用這些參數來決定哪個上下文菜單應被創(chuàng)建.但是在這個例子中,Activity所有的上下文菜單都是相同的.
然后,當用戶從上下文菜單選擇一個菜單項時,系統(tǒng)會調用方法 onContextItemSelected(). 下面的例子展示了如何處理被選擇的菜單項:
@Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId()) { case R.id.edit: editNote(info.id); return true; case R.id.delete: deleteNote(info.id); return true; default: return super.onContextItemSelected(item); } }這些代碼與選項菜單中的例子代碼基本相同.getItemId() 從所選的菜單項獲取菜單ID,并且使用switch語句匹配菜單ID與對應的處理.并且同于選項菜單的例子,default語句調用父類的同一方法處理未被我們處理的菜單項.
在此例中,被選擇的View條目是一個 ListView條目.為了在選擇的一個view條目上執(zhí)行相應的動作,應用程序需要知道View條目的list ID.為了獲得 list ID,程序中調用了 getMenuInfo(), 它返回一個 AdapterView.AdapterContextMenuInfo 對象,這個對象包含了條目的list ID.本地方法editNote()和deleteNote()接受這個list ID用于執(zhí)行一些作.
注: 上下文菜單項不支持圖標或快捷鍵.
轉載于:https://www.cnblogs.com/android-html5/archive/2011/12/24/2533611.html
總結
以上是生活随笔為你收集整理的android菜单详解三:上下文菜单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GeneXus 图片的创建与删除1
- 下一篇: 防止论坛用户重复登录的方法 .