所谓的上下文菜单就是一个你长按一个view,就会弹出一个菜单栏的东西,这玩意儿的使用非常简单。我们用listview来演示。
创建上下文菜单
由于Listview的所有选项名称都是放在一个List中的,所以我们需要自定义一个List如ArrayList来存放我们所有的选项名。
1 | private ArrayList<String>getDate() |
在把listview设置完毕后,调用registerForContextMenu方法,即可将listview变为菜单。接着我们需要重写系统自带的onCreateContextMenu
这个方法一创建完毕就会得到menu对象,接下来你可以使用menu对象来设置标题,设置图标这些东西就不用说了吧。
往上下文菜单里添加选项
上下文菜单添加选项有两种办法:1.在代码中动态添加。2.在xml文件中静态注册。
在代码中添加就是简单调用add方法:
1 | public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) |
add方法的第一个参数为groupid,第二个就是每个item的唯一标识符id,第三个参数就是优先顺序,第四个参数不用说了吧。
在xml文件中注册就需要在res/menu文件下添加一个xml文件:
1 | <item |
然后接下来的事你就猜到了:
1 | MenuInflater inflater = new MenuInflater(this); |
为上下文选项添加点击事件
重写onContextItemSelected
方法就可以获得监听事件,很简单那。
1 | @Override |
注意如果实在代码中添加的话,case 后就不应该是R.id.了,而应该是你add方法中的第二个参数。
效果如下: