天天看點

ListView單擊和長按彈出上下文菜單(ContextMenu)

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對應的事件,應該都可以彈出上下文菜單,不過沒有經過測試。

繼續閱讀