上下文菜單,就是長按某個view後彈出菜單。關聯的是View。java
效果圖:android
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <group android:checkableBehavior="none"> <item android:id="@+id/item_context_item1" android:title="Item1"/> <item android:id="@+id/item_context_item2" android:title="Item2"/> <item android:id="@+id/item_context_item3" android:title="Item3"/> </group> </menu>
registerForContextMenu(view);
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { MenuInflater inflator=new MenuInflater(this); inflator.inflate(R.menu.menu_context,menu); super.onCreateContextMenu(menu, v, menuInfo); }
@Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.item_context_item1: toast("Item1"); break; .... } return super.onContextItemSelected(item); }
registerForContextMenu(lv)
經過 AdapterContextMenuInfo
來獲取是點擊Item
的 Position
ide
@Override public boolean onContextItemSelected(MenuItem item) { AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo(); Toast.makeText(this, "menuInfo.position:" + menuInfo.position, Toast.LENGTH_SHORT).show(); return super.onContextItemSelected(item); }
// Show Popup Menu void showPopupMenu(Context mContext,View view){ // 爲View指定 PopupMenu PopupMenu pm=new PopupMenu(mContext,view); // 指定 Menu 文件 pm.getMenuInflater().inflate(R.menu.menu_test,pm.getMenu()); //Item 點擊事件 pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { toast(item.getTitle()); return true; } }); pm.show(); //顯示 }