PopupMenu用法

2023-11-11

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

   @Override
    public 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() {
                    @Override
                    public 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也是可以监听的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PopupMenu用法 的相关文章

  • java 数组继承_关于对象的行为、数组、继承和类的高级概念(Java)

    1 对象的行为 1 方法调用栈 所有的方法调用都维护在一个称为调用栈的结构中 第一个被调用的方法就是main 该方法是Jvm调用的 因此main 方法总是在调用栈的底部 2 调用方法 一个方法被调用时该方法就放在调用栈的顶部 直到方法执行完
  • 一张图告诉你:今年上市的独角兽,股票表现都还好吗?

    西雅图IT圈 seattleit 今日作者 栗头蓝 一个充满着人文情怀的 web前端相声演员 2019年是独角兽公司上市的大年 定义独角兽公司的一条标准是 估值超过十亿美元的创业公司 截止到6月中旬 美国共有177家这样的独角兽 相比十年前
  • SSM项目中的Layui登陆

    该登陆的的具体结构如图下 在WEB INF jsp admin目录 下创建login jsp页面 写下所需要的登陆页面html代码 在com bdqn controller admin包下创建SystemController控制器层 写页面
  • java21天打卡 day10-字符串2

    字符串2 1 截取子字符串 1 取从第三个字符开始到最后 2 取第二到第四个字符 2 分割字符串 public class Day10 public static void main String args 字符串2 1 截取子字符串 1
  • websocket协议简介

    概念介绍 单工通信 数据传输只允许在一个方向上传输 只能一方发送数据 另一方接收数据并发送 半双工 数据传输允许两个方向上的传输 但在同一时间内 只可以有一方发送或接收数据 全双工 同时可进行双向数据传输 websocket介绍 WebSo
  • 微信小程序java登录授权解密获取unionId(填坑)

    官方流程图 第一步 获取code 说明 小程序调用wx login 获取 临时登录凭证code 并回传到开发者服务器 开发者服务器以code换取 用户唯一标识openid 和 会话密钥session key 之后开发者服务器可以根据用户标识
  • 数据科学与大数据分析项目练习-2使用R进行K-means聚类分析

    使用R进行K means聚类分析 使用Rstudio读取grades km input csv并进行练习 yearly sales csv包含620条数据 包含4种变量 student English Math 和 Science 首先还是
  • 目标检测之Generalized Focal Loss介绍

    Generalized Focal Loss介绍 论文地址 https arxiv org abs 2006 04388 mmdetection已经实现了GFL 简单的说是继承的onestage loss改成作者提出的qfl dfl 正负样
  • DELL服务器R230 RIAD1创建

    DELL服务器R230 RIAD1创建 服务器开机后 按Ctrl R键 进入配置RIAD 第一步 删除虚拟硬盘中的硬盘 可以看到Virtual Disk中显示的2个硬盘都是1 8T的 但前面1和2都是Non RAID 说明这两块硬盘没有进行
  • java异步编程

    java异步调用 定义 Java异步调用是指在调用某个方法时 不需要等待该方法执行完毕才能继续执行下面的代码 而是通过多线程或回调函数等方式 让该方法在后台执行 同时允许程序继续执行下面的代码 这种方式可以提高程序的并发性和响应速度 特别是
  • 【翻译】Attention Is All You Need

    Attention Is All You Need 注意力是你所需要的一切 论文地址 https proceedings neurips cc paper 2017 file 3f5ee243547dee91fbd053c1c4a845aa
  • x86汇编指令学习

    ltr 使用方法 ltr ax 意义 将寄存器ax中的值加载到任务寄存器 TR 中 jnz 和 jne jnz or jne 是指令测试之后的条件跳转 jnz 如果Zero flag ZF 被清零 它将跳转到指定位置 jnz 通常用于显示测
  • Python 程序设计与算法基础教程(第二版)第八章上机实践

    第八章上机实践部分参考答案 2 求阶乘 3 Fibonacci 斐波那契 数列 4 利用可变参数定义求任意个数数值的最小值的函数min n a b c 5 利用元组作为函数的返回值 求最大值 最小值和元素个数 函数后缀带D为递归哦 2 求阶
  • opencv 识别图片和视频中的人脸

    识别图片中的人脸 import cv2 加载图像并创建一个人脸识别的级联分类器 image cv2 imread test jpeg face cascade cv2 CascadeClassifier D pyTest venv Lib
  • wireshark常见提示错误

    TCP dup ack 重复应答 TCP dup ack XXX X 表示第几次重新请求某一个包 XXX表示第几个包 不是Seq X表示第几次请求 丢包或者乱序的情况下 会出现该标志 RST ACK 重置 一般问题不大 TCP Retran
  • 关键词爬取图片(Python)

    废话不多说 直接上代码 测试了好几遍 确认管用才发出来 import requests import os import re headers User Agent Mozilla 5 0 Windows NT 10 0 WOW64 App
  • pandas 获取不符合条件/不包含某个字符串的dataframe

    工作中数据的处理中往往会遇到筛选出不符合条件的或者不包含某个字符的dataframe 我们会如何去做呢 可能你会想到用python写一个函数 然后用panda的apply函数或者map函数来进行处理 不可否认这是一中方法 但是实际上pand
  • JS面向对象编程浅析

    在AJAX兴起以前 很多人写JS可以说都是毫无章法可言的 基本上是想到什么就写什么 就是一个接一个的函数function 遇到重复的还得copy 如果一不小心函数重名了 还真不知道从何开始查找错误 因为大家总是用面向过程的编程思想来写JS代
  • Hexo个人博客主题配置

    系列文章目录 1 Hexo Github Gitee 搭建个人博客 2 Hexo个人博客主题配置 目录 系列文章目录 配置站点信息 修改主题 Next主题配置 样式 favicon avatar rss 代码块 回到页面顶部 阅读进度条 G
  • AI商业化如何落地?看设计师如何利用AI细化工作流

    自从AI爆火之后 人类是否会被AI取代一直都是打工人格外关注的问题 而最近 在小编深入探索到我们用户的使用情况后 发现已经有人拿神采PromeAI直接实现了商业应用 将AI的设计创意应用得淋漓尽致 并且直接进军房地产及家装行业 让我们一起来

随机推荐

  • CSS样式–被忽略的前端基础(二)

    CSS样式 被忽略的前端基础 二 前言 写css的时候有没有觉得属性值千奇百怪 有数值 有带单位的数值 有百分百 有函数 有颜色 red fff rgba 255 255 255 0 CSS属性值种类 1 数值 长度值 用于指定例如元素宽度
  • react-router-dom

    进入项目目录 使用npm安装react router dom npm install react router dom save dev 然后我们新建俩个页面 分别命名为 home 和 detail 在页面中编写如下代码 home js i
  • 一个都不能少: DevOps的3大核心基础架构

    DevOps的涵盖面非常广 因为这个概念的火热 又有很多文章和技术都在把DevOps的帽子扣在自己头上 让很多人迷惑不解 其实 DevOps的知识体系如果从顶层上来分解 只有2块 方法论和工具链 方法论这块 因为DevOps的很多理念脱胎于
  • rank/row_number() OVER ()使用

    row number OVER PARTITION BY COL1 ORDER BY COL2 表示根据COL1分组 在分组内部根据 COL2排序 而此函数计算的值就表示每组内部排序后的顺序编号 组内连续的唯一的 与rownum的区别在于
  • Qt 打开文件夹并选择该文件

    打开文件夹 并选择指定文件 打开文件夹 并且选择指定文件 QString fileName ui gt lineEdit gt text if fileName isEmpty return QProcess process fileNam
  • SQL数据库插入、修改、删除及删除表中数据操作示例(insert、update)

    目录 1 数据库的连接 创建 2 对字段的操作 alter table 3 SQL数据库插入 修改 删除操作 4 数据库的查询操作大全 select 5 多表查询 join on 6 约束操作 三 SQL数据库插入 修改 删除 1 插入数据
  • linux-arm电源管理

    一文搞懂ARM SoC功耗控制架构
  • kube-apiserver启动时报错并且不能操作etcd

    kube apiserver启动时报错 错误信息如下 Flag kubelet port has been deprecated kubelet port is deprecated and will be removed W0914 15
  • 软构第九天:OOP编程语法

    文章目录 前言 一 OOP的基本概念 二 基本概念 类 对象 属性 方法 三 接口 四 继承与重写 五 多态 子类型 重载 总结 前言 上节课说了ADT的相关内容 这节课老师讲述了ADT思想在编程语言中的具体体现 OOP OOP思想我们已经
  • 操作系统之虚拟化CPU(一)介绍

    但凡学习过计算机的人 一定都听说过一个问题 并发和并行的区别 此处引用知乎用户的关于吃饭的形象比喻 是的 你就是任劳任怨的CPU 而吃饭和接电话是你要执行的多个任务 你吃饭吃到一半 电话来了 你一直到吃完了才去接 说明你不支持并发也不支持并
  • (3)使用uboot界面通过tftp安装kernel,rootfs

    板子已经通过Hitool烧录U boot 参数配置 1 单板上电后 敲任意键进入u boot 设置serverip 即tftp服务器的ip ipaddr 单板ip 和ethaddr 单板的MAC地址 hisilicon setenv ser
  • ldap登录 AD域登录工具类

    1 依赖包
  • RabbitMQ 消息确认机制、补偿机制、消息幂等性实践

    1 场景 先看这么几个面试题 如何保证消息的可靠性投递 即如何确定消息是否发送成功 如果失败如何处理 补偿机制 如何保证消息不被重复消费 或者说 如何保证消息消费时的幂等性 2 消息的可靠性投递 消息确认 消息确认包括主要生产者发送确认和消
  • ChatGPT认知课07:ChatGPT AI时代,还需要专门学写作么?

    5 天前 ChatGPT云炬学长 关注 我认为ChatGPT出现后 我们更需要学写作了 这节课就聊聊这个话题 01ChatGPT会像作家一样写出好作品么 自媒体人 职业写作者会失业么 ChatGPT可以高效生成文本 语言表达能力确实牛逼 但
  • 京东的Netty实践,京麦TCP网关长连接容器架构

    背景 早期京麦搭建 HTTP 和 TCP 长连接功能主要用于消息通知的推送 并未应用于 API 网关 随着逐步对 NIO 的深入学习和对 Netty 框架的了解 以及对系统通信稳定能力越来越高的要求 开始有了采用 NIO 技术应用网关实现
  • 如何设置文本输入框中字体的颜色?

    设置input type text或者textarea这些能输入内容的文本框 或区域 的颜色 input type text name T1 size 20 style color 00FF00 这一块就是设置文字颜色的
  • C++命令模式

    命令模式 原理 背景 原理 代码解释 应用 工作队列 记录日志 思考 原理 背景 在日常的编程过程当中 我们时常会遇到需要在底层执行许多方法的情况 在工厂模式中 以面馆为例 介绍了如何通过继承抽象接口 帮助面馆实现原材料上的多样性 以区分不
  • 111、锐捷交换机如何配置?一步步详解,交换机配置再也不难了

    锐捷交换机最近挺火 这段时间不断的有朋友多次提到锐捷交换机的配置 本期我们来了解锐捷交换机的配置 本期内容共分为两部分 第一部分是vlan的基础配置命令 第二部分是锐捷交换机的配置实例 我们一起来看下 如何一步步的连接及配置锐捷交换机 一
  • 微信小程序云函数构建npm,找不到node_modules以及后续出现上传所有文件,并没有上传node_modules的文件问题

    最近研究下微信小程序云函数 在构建npm的时候困扰了很久 总是提示找逼到node modules 之前一直也没接触过nodejs 不想购买服务器 选择尝试下云开发 出现这个错误在网上找了很多 都没找到原因 包括官方文档 下面的过程有些别扭
  • PopupMenu用法

    PopupMenu是种显示位置不固定的弹出菜单 因为它显示在参照控件下方 所以展示位置随着参照控件的位置变化而变化 而且 坑人的是PopupMenu有两个版本 一个是在v7包中的 一个是在系统自带包中的 我下面讲的是v7包中的 其实两个都是