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