ContextMenu是当用户长按某个控件时弹出在屏幕中央的菜单。这样的话,每个控件都可以拥有自己独特的菜单。就好比Windows里系统里我们右键不同的东西会有不同的菜单一样。

首先借个图展示一下:

然后开始想问题:

1、怎么构建ContextMenu?

2、Activity怎么知道我要长按哪个控件弹出ContextMenu?

3、如何响应点击?

1、怎么构建ContextMenu

重写onCreateContextMenu就可以了。看代码:

@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){ // 可以通过识别View来为不同的控件添加不同的ContextMenu if(v.getId() == R.id.begin){ MenuInflater flater = getMenuInflater(); flater.inflate(R.menu.context_menu_1, menu); menu.setHeaderTitle("contextView sample").setHeaderIcon(R.drawable.img_bt_search); } }

当然也可以不通过xml文件,而直接用代码。方法可参见上一篇博文。

2、Activity怎么知道我要长按哪个控件弹出ContextMenu

这需要我们做一个注册的动作。在Activity的OnCreate方法里写上:

registerForContextMenu(btnBegin);

参数当然就是你要弹出ContextMenu的那个控件。

3、如何响应点击?

重写onContextItemSelected方法就可以了。看代码:

@Override public boolean onContextItemSelected (MenuItem item){ Toast.makeText(this, item.getTitle(), Toast.LENGTH_LONG).show(); return true; }

另外,ContextMenu里的菜单项不能有图标,但是可以为它的Header设置图标。如代码里写的那样:

menu.setHeaderTitle("contextView sample").setHeaderIcon(R.drawable.img_bt_search);

Android Menu 之 ContextMenu 详解相关推荐

  1. Android Menu 之 optionsMenu 详解

    optionsMenu就是用户在按下手机键盘上的Menu键时,Activity下方弹出的菜单.借个图展示一下: 接下来,本文的主要内容有: 1.  如何建立菜单 2.  如何响应菜单上的点击动作 3. ...

  2. Android 系统(199)---Android事件分发机制详解

    Android事件分发机制详解 前言 Android事件分发机制是Android开发者必须了解的基础 网上有大量关于Android事件分发机制的文章,但存在一些问题:内容不全.思路不清晰.无源码分析. ...

  3. Android 吸入动画效果详解(仿mac退出效果)

    转载自:http://m.blog.csdn.net/blog/leehong2005/9127095 [转]Android 吸入动画效果详解 1,背景 吸入(Inhale)效果,最初我是在iOS上面 ...

  4. android jar 包 意见反馈功能,android重点jar包详解.docx

    android重点jar包详解 深入理解View(一):从setContentView谈起 我们都知道?MVC,在Android中,这个?V?即指View,那我们今天就来探探View的究竟.在onCr ...

  5. Android应用坐标系统全面详解

    Android应用坐标系统全面详解 原文链接:CSDN@工匠若水,http://blog.csdn.net/yanbober/article/details/50419117 1. 背景 去年有很多人 ...

  6. Android NFC开发实战详解

    Android NFC开发实战详解 Android开发实战详解NFC国内第一本AndroidNFC开发书籍带你开启AndroidNFC开发的神秘之旅大综合案例帮助读者快速进入实战角色:WiFi快速连接 ...

  7. Android Gradle 自定义Task详解二:进阶

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78523958 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  8. Android Gradle 自定义Task 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  9. android ------- 开发者的 RxJava 详解

    在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github:  https://github.com/ReactiveX/RxJava  https://githu ...

最新文章

  1. matlab 多个表数据相加,Excel合并计算完成多表格数据汇总求和
  2. 改造我们的学习:有钱不会花,抱着金库抓瞎
  3. @autowired注解原理_相见恨晚,一个架构师也不会用的Lombok注解
  4. 开发人员MySQL调优-理论篇
  5. python中pyecharts_小白学Python(8)——pyecharts 入门
  6. 华为回应“停止社招”;iPhone XS 取消美颜; iCloud 大面积瘫痪 | 极客头条
  7. Nginx启动报[10013]错误
  8. SetWindowLong 除去窗体标题栏
  9. iMovie for Mac如何创建分屏效果?
  10. 海洋工作室——网站建设专家:人生3万天 转载
  11. 地理坐标系与投影坐标系
  12. 到底什么是前后端分离
  13. iSCSI引入FC/SAN
  14. netty 错误 #[IllegalReferenceCountException: refCnt: 0, decrement: 1]
  15. html5 lang属性都有哪些语言,HTML5中的lang属性,zh
  16. 线上支付,出款和收款
  17. 什么是数字化?企业该如何做数字化?
  18. 无法创建新的分区,也找不到现有的分区
  19. 既然有MySQL了,为什么还要有MongoDB?
  20. 文章阅读总结:OpenAI-Codex

热门文章

  1. SpringBoot并发压测工具ContiPerf
  2. 拉姆表达式 语句组成
  3. Android中fastboot devices无法发现设备解决方案和adb remount问题解决
  4. 【C语言、C++基础编程题】【基础类题集】【平顶山学院ACM算法攻关部】
  5. Linux | Ubuntu | 查看路由 | 修改路由
  6. OpenCV 图片去水印(不需要自己做水印模板)
  7. php GD库做水印功能,合并图片
  8. 百度千言-中文文本相似度实战
  9. 移动架构之MVP框架
  10. 利用mybatis拦截器注解处理sql