天天看点

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对应的事件,应该都可以弹出上下文菜单,不过没有经过测试。

继续阅读