二话不说,先上图:

可以很容易看到这是一个类似于Dialog悬浮在活动上的控件,它是由被注册的view长按所触发的。当然啦,也有其他的实现方式,这里就先介绍一下系统的ContextMenu:(先剧透一下,使用方式和Menu是一样的)

Step1:

this.registerForContextMenu(listView);

在onCreate里为listView注册ContextMenu,

Step2:

覆写onCreateContextMenu来初始化,这里被打上注释的是动态加载menuItem,静态加载和OptionsMenu是一样的

@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {super.onCreateContextMenu(menu, v, menuInfo);//上下文菜单的呼出每一次都会被调用/* menu.setHeaderTitle("文件操作");menu.add(0, 1, Menu.NONE, "发送");//第一个是组别,第二个是数字是该组里的条目序号menu.add(0, 2,Menu.NONE, "删除");*///静态添加菜单项getMenuInflater().inflate(R.menu.menu_main, menu);//资源id易于管理,google推荐}

Step3:

覆写onContextItemSelected,监听菜单点击事件

    @Overridepublic boolean onContextItemSelected(MenuItem item) {//获取到的是listView里的条目信息AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();switch (item.getItemId()) {case R.id.mi1:Toast.makeText(this, "已发送" + info.id, Toast.LENGTH_SHORT).show();break;case R.id.mi2:Toast.makeText(this, "正在删除" + info.id, Toast.LENGTH_SHORT).show();break;default:return super.onContextItemSelected(item);}return true;}

其中我们可以通过item.getMenuInfo来获取item所对应的ListView里条目的信息,其中info.id即就是listView里的position

Step4:

去res/menu/xxx.xml里静态构建菜单,当然啦,动态的话是不需要这一步的

<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"tools:context=".MainActivity"><group android:id="@+id/group1"><item android:id="@+id/mi1"android:title="发送"><!--ContextMenu的嵌套,点击进去之后又是一个ContextMenu--><menu><item android:id="@+id/mi_display_setting"android:title="发送邮件"android:icon="@mipmap/ic_launcher"/><item android:id="@+id/mi_network_setting"android:title="发送短信"/><!-- 别的菜单项 --></menu></item><item android:id="@+id/mi2"android:title="删除"/></group>
</menu>

***********有一个问题就是我暂时还没发现修改ContextMenu窗体的大小风格,知道的博友还请指教***********

demo地址

ContextMenu的使用详解相关推荐

  1. 2021-08-14 WPF控件专题 ContextMenu 控件详解

    1.ContextMenu 控件介绍 简介:父类:MenuBase MenuItem (HeaderedItemsControl) ItemsControl 特定于某个元素之上的功能菜单.(右键菜单) ...

  2. 【转】Android菜单详解——理解android中的Menu--不错

    原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...

  3. Android菜单详解——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  4. android子视图无菜单,Android 菜单详解

    Android中菜单分为三种,选项菜单(OptionMenu),上下文菜单(ContextMenu),子菜单(SubMenu) 选项菜单 可以通过两种办法增加选项菜单,一是在menu.xml中添加,该 ...

  5. Android菜单详解(三)——SubMenu和IconMenu

    我们在上一篇介绍了如何在Android中创建和响应选项菜单,今天我们将探索子菜单和图标菜单. 子菜单Sub Menu 子菜单提供了一种自然的组织菜单项的方式,它被大量地运用在windows和其他OS的 ...

  6. vue怎么实现右键二级菜单_vue中如何自定义右键菜单详解

    在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件,如下: v-for="item in resourceList" :key="item.id&qu ...

  7. vscode中setting.json配置详解

    vscode中的setting.json配置文件配置详解 话不多说上配置文件 大家按需复制到自己的setting.json配置文件中即可 [{// 控制是否在编辑器中显示 CodeLens." ...

  8. (4.1.40.5)Android手势检测GestureDecetor详解

    手势检测还有一个 ScaleGestureDetector 也是为手势检测服务的,限于篇幅本文未讲述 一示例 二GestureDetector 手势检测 三GestureDetectorListene ...

  9. android rotate 动画,Android RotateAnimation详解

    RotateAnimation旋转坐标系为以旋转点为坐标系(0,0)点.x轴为0度,顺时针方向旋转一定的角度. 1.RotateAnimation(fromDegrees, toDegrees) [默 ...

最新文章

  1. python添加文字水印中间旋转45度_pythonpdf添加水印
  2. Spring Boot 2.x基础教程:使用Spring Data JPA访问MySQL
  3. 3-uboot-spl代码流程
  4. arduino 勘智k210_如何评价嘉楠耘智的勘智K210芯片?
  5. 整形数组按照频率排序
  6. cjson源代码解读 (一)介绍
  7. 在Mac中关闭应用通知的两种方法
  8. atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc 艾提拉总结 attilax总结 1.1. 修改此java文件,让他启动编译,还是不能生成了新的class, 1 1.2. 查
  9. 电话簿简单实现(JAVA,带图形界面文件读取)
  10. 主引导记录 - 维基百科,自由的百科全书
  11. 怎么管理一个测试团队
  12. HDU6438(优先队列+思维)
  13. sdlc esd oracle,SDLC-PCIE高速同步串口卡
  14. 程序员的薪资为什么这么高?
  15. C++循环输出M * N 的螺旋矩阵
  16. 【沉淀】懵懂入行,但一做就沉心钻研十年——记访谈阿里云SQL Server专家杨钊...
  17. 《ANSYS FLUENT 16.0超级学习手册》——第2章 FLUENT软件介绍2.1 FLUENT软件特点简介...
  18. 数据结构——定长串操作
  19. 1、《穷爸爸富爸爸》有感
  20. 文本处理工具简单介绍

热门文章

  1. 一个简单的实训2.0
  2. 作为一名程序猿,上海和深圳的抉择
  3. c# split方法
  4. 学习笔记:固件和驱动的区别?
  5. 2010十大新兴技术展望
  6. 什么是数字化营销?与ChatGPT结合能产生的化学反应?
  7. [转]数码照片的JPG文件高级信息(用C#读取图片的EXIF信息)
  8. merge into的用法
  9. 微信安卓协议分析【源码】
  10. 宝宝取名:大师起名哪个好?