2018-03-31—ContextMenu使用

大家还记得Spinner的效果吗。ContextMenu的效果很像我们Spinner的dialog使用效果,弹出一个框体,然后有很多的list。今天我们来看一下ContextMenu的使用,contextMenu分为静态使用和动态使用。


2018-03-31—ContextMenu使用_第1张图片
用ContextMenu和TabHost完成的电话簿功能



一、contextMenu静态使用(通过.xml文件添加数据)

1我们首先在res目录下创建menu文件夹。

2.之后再menu文件夹里面创建.xml文件(名字我起为context_menu),

3.在context_menu中创建item,赋予id和title。


2018-03-31—ContextMenu使用_第2张图片
创建menu.xml文件并写item标签

4.在activity中重写onCreateContextMenu方法和onContextItemSelected


2018-03-31—ContextMenu使用_第3张图片
onCreateContextMenu方法(静态使用)


2018-03-31—ContextMenu使用_第4张图片
onContextItemSelected


关于静态的contextMenu就配置完了,然后我们需要通过一个按钮来启动它。

给button注册创建contextMenu监听器。

很简两行行代码搞定。


2018-03-31—ContextMenu使用_第5张图片
效果图

大家只需要在意那个按键就好,其他的是我自己写的代码,跟这个没什么关系。



二、contextMenu动态使用(通过java代码实现)

如果说我们想要不断地添加menu数据,或者想要让不同的item实现不同的menu效果,我们首选的最好还是动态实现(用java代码,而不是用.xml文件)。

这回我们可以考虑借助listView一下。

1.activity.xml文件中创建listview标签,赋予id  mLv(你们随意)。

2.在activity.java文件中添加listView控件名字为mLv。

3.给mLv设置contextMenu的监听器(registerForContextMenu(mLv);)

4.给静态一样,重写onCreateContextMenu和onContextItemSelected两个方法,但是写的代码不太一样了。


2018-03-31—ContextMenu使用_第6张图片
onCreateContextMenu动态写法

第一行代码,我们首先获取到我们mLv的适配器。

第二行代码,我们给我们创建的menu一个标题,我们用mLv当前item的名字作为他的标题。

第三行代码,我们给menu的标题旁边添加一张图片。

剩下的都是给我们的menu添加item

第一个参数是组的id,我们不用去关;第二个是item的id,这个就是我们经常写的id的那个值,不能有重复;第三个参数是条目编号,谁最大谁显示在前面;第三个就是我们title的内容。


我们的onContextItemSelected方法还是跟之前一样,只是我们要改成我们刚写的menu的id判断。


2018-03-31—ContextMenu使用_第7张图片
onContextItemSelected动态写法。

然后我们来看一下效果图

2018-03-31—ContextMenu使用_第8张图片

你可能感兴趣的:(2018-03-31—ContextMenu使用)