PopupMenu是种显示位置不固定的弹出菜单,因为它显示在参照控件下方,所以展示位置随着参照控件的位置变化而变化,而且,坑人的是PopupMenu有两个版本,一个是在v7包中的,一个是在系统自带包中的,我下面讲的是v7包中的,其实两个都是差不多的,导包的时候主要下就可以,下面是创建PopupMenu时会用到的一些方法:
1、创建PopupMenu对象时的构造方法:PopupMenu pop = new PopupMenu(Context context, View anchor);
构造方法中有两个参数,第一参数是上下文对象,参数二是你点击了啥才显示PopupMenu的那个监听的View,比如我点击了Button bt就显示,那我就会给bt进行一个监听,bt.SetOnClickListener(this);然后就会有下面这个方法:

   @Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_back://点击返回键// 执行返回             break;case R.id.del_all://点击了加号按钮PopupMenu pop = new PopupMenu(this, v);//v是加号控件pop.getMenuInflater().inflate(R.menu.history_list_pop_menu, pop.getMenu());pop.show();pop.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {@Overridepublic boolean onMenuItemClick(MenuItem item) {switch (item.getItemId()){case R.id.action_all_delete://点击了删除所有数据//....case R.id.action_hello://点击了.....
                       上文中的v就是参数二,其实就是bt

2、对上面这段代码几个方法解释下,inflate这个方法可以加载一个PopupMenu的布局文件,要是你不想用pop.getMenuInflater().inflate(R.menu.history_list_pop_menu, pop.getMenu());也可以这样写pop.inflate(R.menu.history_list_pop_menu);也是可以的,我这里的布局文件是history_list_pop_menu,然后show就可以显示了,setOnMenuItemClickListener是对菜单中的选项进行监听的
下面我给出我的布局文件history_list_pop_menu代码段:就两个按钮

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"><item
        android:id="@+id/action_all_delete"android:orderInCategory="100"android:title="@string/all_delete"app:showAsAction="never"/><item
        android:id="@+id/action_all_share"android:orderInCategory="100"android:title="@string/all_share"app:showAsAction="never"/>
</menu>

其实到这里,一个普通的PopupMenu已经完成了,但是,还有其他的几个方法也介绍下,可能用的上:
onOpenSubMenu : 显示子菜单。
onCloseSubMenu : 关闭子菜单。
onMenuItemSelected : 选择菜单项。
getMenu : 获得Menu对象。之后便能给Menu对象调用addSubMenu方法添加子菜单;addSubMenu返回一个SubMenu对象,可调用SubMenu的add方法给子菜单添加具体项目。
网上说有这个几个方法,反正我是没有找到,显示子菜单应该是在PopupMenu中再显示一个菜单吧,我怎么什么鬼也没有发现在哪?点击这里查看,这个博客里有提到,反正我找不到这些方法,希望大神们可以找到,或许是我v7包比较老吧!
我这里是可以直接使用的,并不需要什么onOpenSubMenu
看我的代码:

private SubMenu subMenu;
.
.
.
subMenu=popupMenu.getMenu().addSubMenu(0,999,9,"更多");//添加子菜单subMenu.add(0, 111, 0, "子菜单1");subMenu.add(0, 112, 1, "子菜单2");

我这里直接跳出更多,而且可以直接点击的,点击了更多后,会将子菜单1和子菜单2显示出来。
同样subMenu也是可以监听的。

PopupMenu用法相关推荐

  1. popupmenu用法 matlab,如何在下拉菜单popupmenu加入以下代码

    本帖最后由 greenjvren 于 2015-5-6 13:15 编辑 L1=str2double(get(handles.edit1,'String')); L2=str2double(get(h ...

  2. matlab uicontrol中popupmenu(弹出式菜单)用法,用于显示不同的函数

    h0=figure('toolbar','none',...'position',[200 150 450 250],...'name','实例36'); x=0:0.5:2*pi; y=sin(x) ...

  3. Android开发笔记(一百二十一)列表弹窗PopupMenu和ListPopupWindow

    PopupMenu 基本用法 PopupMenu是种显示位置不固定的弹出菜单,因为它显示在参照控件下方,所以展示位置随着参照控件的位置变化而变化.而其他几种菜单的显示位置都是固定的,比如说选项菜单Op ...

  4. android二级菜单ui,巧用PopupMenu实现NavigationView的二级子菜单

    来简书的第一篇文章,想了想就以这个作为开头了^^ 概述 写自己的app时,发现NavigationView的默认菜单功能不支持类似OptionMenu那样点击后弹出二级子菜单的功能,思考了下想用Pop ...

  5. 弹出菜单 PopupMenu 的使用

    这次是一个弹出菜单,当点击按钮或者文字时,在下方弹出一个菜单.PopupMenu是在android sdk3.0版本以后加入了一个特殊效果.他可以在任何一个View显示. 源码下载 下面看一下效果图: ...

  6. PopupMenu的简要使用

    PopupMenu的创建,使用及常见用法 一:功能概述 PopupMenu可以非常方便的在指定view的下面显示一个弹出菜单,该弹出菜单的位置是可变的.在一些应用里面例如浏览器里面长按屏幕会显示弹出菜 ...

  7. android popupmenu 动态添加,Android简单实现列表菜单--PopupMenu的简单使用。

    最近发现PopupMenu用来做菜单非常的方便,而且使用也非常的简单,下面我们就来看下如何使用的吧. 首先在布局文件中创建两个Button. xmlns:android="http://sc ...

  8. c语言中external,static关键字用法

    static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...

  9. Pandas_transform的用法

    先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...

最新文章

  1. php mysql多重筛选,如何使用php、html、mysql构建一个多重分类选择列表
  2. 启动ipython_ipython,_ipython 启动错误,ipython - phpStudy
  3. Thinkphp框架中D()和M()的区别
  4. 下方向键_Bash使用$#x27;...#x27;来捕获方向键
  5. 快速入门SSM整合配置建立第一个SSM项目模板
  6. ubuntu11.04服务器安装
  7. 69 session和cookie的区别
  8. 项目:SQL server 2008构建群集——环境部署
  9. centos7 安装webmin
  10. 主数据处理链碰到空数据节点不在继续执行的问题解决方案
  11. 隐藏终端、暴露终端和RTS、CTS机制
  12. linux安装i3wm桌面环境,ArchLinux + i3wm 桌面 Windows10 双系统安装(重点记录)
  13. 中级软件设计师知识点总结
  14. 文献翻译——基于关联规则挖掘识别的鸡源大肠杆菌共有多重耐药模式(上)
  15. linux——CPU使用率、内存使用率、磁盘使用率等详解
  16. 生成树协议STP 网络冗余技术
  17. Mac应用程序无法打开提示不明开发者?别着急看这里
  18. VBA代码实例---Msgbox函数及应用实例
  19. Kaggle比赛整理
  20. 电话销售潜在客户从哪里找 电销行业还值得深入研究吗?

热门文章

  1. 博途 V13SP1安装教程
  2. Android AudioTrack 爆音问题记录
  3. [设计原则] 六大设计原则之“开闭原则”
  4. 大佬横行的币圈,谁才是真正“一割”?
  5. 【WINDOWS / DOS 批处理】call命令详解
  6. 修改mysql表的字段名_mysql中修改表字段名/字段长度/字段类型详解
  7. 人工智能导论(6)——机器学习(Machine Learning)
  8. 预约直播|3月30日下周四,应用促活大揭秘,快速提升DAU
  9. 计算e=1+1/1!+1/2!+1/3!+...,当1/n!<1e-7时停止
  10. 微信小程序获取滚动条高度_小程序页面获取滚动条高度