ListView單擊和長按彈出上下文菜單(ContextMenu)
1.長按彈出上下文菜單 所有的View 都可以監聽setOnCreateContextMenuLi stener事件,長按都會彈出上下文菜單 View.setOnCreateContextMenuLi stener(OnCreateContextMenuListe ner l)
或者在activity裡面注冊view的上下文菜單 registerForContextMenu(View view)
重寫 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { if (item.getItemId() == 0) { //處理點選上下文菜單事件 } }
處理對應的事件。
----------------------------------------------------------- 長按ListView中的一項item彈出上下文菜單 隻需要監聽ListView的 setOnCreateContextMenuLi stener事件即可 然後重寫對應的方法,同上面的一樣。
在onContextItemSelected中擷取 ListView中item對象 @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo itemInfo = (AdapterContextMenuInfo)item.getMenuInfo(); // adapter ListView 中用到的擴充卡 Object itemValue = adapter.getItem(itemInfo.position); //擷取到item對象後就可以進行任何操作了 }
-----------------------------------------------------------
2. 單擊View彈出上下文菜單
View.setOnCreateContextMenuLi stener(OnCreateContextMenuListe ner l) View.setOnClickListener(OnClickListener l)
需要同時監聽view的單擊事件和上下文菜單事件 然後在View的onClick調用 View.showContextMenu()方法。
如下 View.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) { View.showContextMenu(); }
);
然後重新對應的方法,同上一個一樣。
這樣,不論單擊或者長按,都可以彈出上下文菜單。
隻要能監聽到view對應的事件,應該都可以彈出上下文菜單,不過沒有經過測試。