PopupMenu的简要使用

article/2025/9/29 21:33:20

PopupMenu的创建,使用及常见用法

一:功能概述

PopupMenu可以非常方便的在指定view的下面显示一个弹出菜单,该弹出菜单的位置是可变的。在一些应用里面例如浏览器里面长按屏幕会显示弹出菜单。

二:创建基本流程

1:创建菜单布局

先在res目录下新建menu菜单,如图所示
在这里插入图片描述
接着自定义一个xml布局,图中是我为了方便测试建立两个布局文件,这里不用疑惑。
xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/sub_item_1"android:title="Save As PDF"/><itemandroid:id="@+id/sub_item_2"android:title="Save As Html"/><itemandroid:id="@+id/sub_item_3"android:title="Refresh"/><itemandroid:id="@+id/sub_item_4"android:title="Translate"/><itemandroid:id="@+id/sub_item_5"android:title="Look Up Source"/></menu>

效果图:
在这里插入图片描述
每个<item>标签内有两个属性(实际上还有其它非必须属性)idtitle。前者作用是设置资源id,后者是为每个选项设置文本。

2:创建Java代码(在哪里需要弹出来就调用它)

1    private void showPopupMenu(View v){
2        popupMenu = new PopupMenu(MainActivity.this,v);
3        MenuInflater inflater = popupMenu.getMenuInflater();
4        inflater.inflate(R.menu.long_menu,popupMenu.getMenu());
5        popupMenu.setOnMenuItemClickListener(MainActivity.this);
6        popupMenu.show();
7    }

说明:该自定义方法内传入一个对象Viewv参数,作用是当前要展示PopupMenu的依附view对象。PopupMenu的生成我是采用了类成员变量方式,如果读者要直接拷贝只需前面改为PopupMenu popupMenu = new PopupMenu(MainActivity.this,v);即可。第4行是把我们创建的menu里面的菜单名称传入。其余的参数例如第二行和第五行里面的MainActivity.this是context。

3:展现/消失

要展现的话调用我们上面自定义方法即可,消失调用方法如下:

popupMenu.dismiss();

4:对菜单子项设置动作监听

重写onOptionsItemSelected(MenuItem item)即可。例如:

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case sub_item_1:break;case sub_item_2:break;case sub_item_3:break;case sub_item_4:break;case sub_item_5:break;case sub_item_6:break;}return super.onOptionsItemSelected(item);}

这里每个case后面跟的即是每个<item>的id

三:基本属性

PopupMenu可以设置setOnDismissListener来监听其消失时的事件。


http://chatgpt.dhexx.cn/article/EgJKB1ip.shtml

相关文章

解决IOS select下拉框样式

文章目录 问题解决方法 问题 一般来说&#xff0c;在ios端&#xff0c;对于select下拉框会默认出现黑色背景&#xff0c;input输入框上面出现阴影&#xff0c;导致用户体验感不是很好&#xff0c;总体原因是ios中对透明度渲染的效果不是很好。 会出现如下图所示现象&#xff…

vue3—elementPlus如何单独修改页面中的下拉框样式

vue3中只能去修改popper-class这个属性去修改 &#xff08;自己想要的样式&#xff09;重点 :样式修改不能写在scoped中&#xff0c;可以单独开个style popper-class"blueBack"&#xff08;blueBack为自定义class名&#xff09; <el-select popper-class"blu…

VUE3 如何修改饿了么element-plus的下拉框样式?

VUE3 如何修改饿了么element-plus的下拉框样式&#xff1f; 如图&#xff0c;饿了么的样式 已经不在app里面&#xff0c;所以在页面中无法通过样式穿透进行设置样式&#xff0c;只能修改全局的样式&#xff0c;那么我每个页面的样式不一样 每个页面都需要去改全局样式 我想到的…

Python PyQt5l表单应用 - 自定义选择下拉框样式

如何调整默认选择下拉框的样式呢&#xff1f; 1.文件中引用类 QListView from PyQt5.QtWidgets import QListView 2.在控件中添加样式&#xff0c;示例 self.typeCmb.setObjectName("typeCmb") self.typeCmb.setStyleSheet("#typeCmb{border:1px solid rgb(…

Qt QComboBox 下拉框样式修改

今天查了好多资料&#xff0c;发现做出来的都不理想。去查了下Qt源码。发现setView(QAbstractItemView *itemView)这个方法&#xff0c;官方的解释是这样的&#xff1a; void QComboBox::setView(QAbstractItemView *itemView) Sets the view to be used in the combobox pop…

css修改layui的下拉框样式 js_layui创建表单下拉框样式不显示

border-left: 5px solid #009688; 注释&#xff1a;solid实体&#xff0c;实心样式&#xff1b; Blockquote&#xff1a;块引用;Fieldset&#xff1a;字段集; 1.所有浏览器都支持 标签。 fieldset 元素可将表单内的相关元素分组。 标签将表单内容的一部分打包&#xff0c;生成…

elementUi——select选择框的下拉框样式调整——基础积累

最近在用elementUI写后台管理系统&#xff0c;有个弹窗添加的功能&#xff0c;由于弹窗中的内容只有两项&#xff0c;而下拉框的高度较高&#xff0c;导致页面很空。 需要&#xff1a;将下拉框的高度调小&#xff0c;页面布局会好看。 调整前 调整后 实现 通过elementUi官网…

antd a-select下拉框样式修改 vue3 亲测有效

记录一下遇到的问题 1.遇到问题&#xff1a; 使用到Vue3 Ant Design of Vue 3.2.20&#xff0c;但因为项目需求样式&#xff0c;各种查找资料都未能解决; 2.解决问题&#xff1a; ①我们审查元素可以看到&#xff0c;下拉框是在body中的; ①在a-select 元素上添加dropdownCla…

修改select下拉框样式兼容IE和Chrome浏览器

文章目录 问题解决办法 问题 在Chrome浏览器和IE11浏览器下&#xff0c;select下拉框表现的样式不一致。Chrome浏览器下&#xff0c;如图所示&#xff1a; IE11浏览器下&#xff0c;如图所示&#xff1a; 此时select下拉框的css的代码如下&#xff1a; .Data_select {widt…

QComboBox下拉框样式

QComboBox下拉框样式

自定义elementUI select下拉框样式

无论加important还是deep &#xff0c;发现怎样也改不了下拉框的样式&#xff0c;点击元素发现下拉框与script标签是同级的&#xff08;看下图&#xff09; 官方文档上写加 :popper-append-to-body‘false’ &#xff0c;再修改样式&#xff0c;但对我好像没有用 官方文档上…

a-select 下拉框样式修改

// 下拉框的总的样式/deep/.ant-select-dropdown-menu {background: #091F40;border: 1px solid rgba(122, 191, 255, 0.2);box-shadow: 0px 2px 12px rgba(0, 0, 0, 0.2);border-radius: 2px;height: 200px;}// 下拉框 每个item的样式/deep/.ant-select-dropdown-menu-item {f…

element UI指定下拉框样式修改

在一个页面中&#xff0c;有多个下拉框&#xff0c;由于下拉框等级与dom同级&#xff0c;只能改变所有。 解决&#xff1a;在select 中加入popper-class“名称” 即可为下拉框添加类名&#xff0c;从而修改

修改element-ui 下拉框样式

要求定制element-ui选择框Select&#xff0c;需求为增加一根竖线&#xff0c;原始样式为如图&#xff0c;通过打开f12查看样式&#xff0c;做如下调整 修改后效果&#xff1a; //html <div class"hello"><el-select v-model"value" placeholder&q…

原生select下拉框样式修改:去除聚焦的黄色边框样式

原生下拉框聚焦状态border会变黄色&#xff0c;其实并不是border&#xff0c;而是边框边缘的外围 轮廓&#xff08;outline&#xff09;是绘制于元素周围的一条线&#xff0c;位于边框边缘的外围&#xff0c;可起到突出元素的作用。 轮廓&#xff08;outline&#xff09;属性指…

css自定义下拉框样式

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>css自定义下拉框样式</title><style>body {background:#fff;display:flex;justify-content: center;align-items:center;flex-wrap:wrap;p…

element-ui 下拉框样式修改

问题描述 当下拉框字段存在超长的情况下增加横向滚动条&#xff0c;效果如图所示&#xff1a; 解决办法&#xff1a; 在全局样式中添加如下代码&#xff1a; .el-select-dropdown {max-width: 330px;}.el-select-dropdown__item {display: inline-block;}.el-select-dropdow…

HTML下拉框样式美化

在网页中&#xff0c;下拉框的样式最难美化&#xff0c;默认样式巨丑&#xff0c;好在现在已经有各种框架实现了下拉框的样式美化&#xff0c;主要思路都是通过JS代码将下拉框元素用更容易设置样式的div进行替换&#xff0c;再将对应选项及事件进行关联。 最近一项目需要修改很…

VUE学习(二):修改下拉框样式

目录 前言 一、ElementUI文档 二、代码实现 1.el-select选择器 2.设置样式 拓展阅读 前言 在开发中有时需要给某些下拉框选项设置特定的样式&#xff0c;如字体大小&#xff0c;字体颜色&#xff0c;间距等。 一、ElementUI文档 为了实现给特定下拉框设置样式的效果&am…

win10升级后蓝牙不见了,设备管理器里没有,多了个串行控制器里的未知USB设备?...

win10更新后&#xff0c;蓝牙功能不见了&#xff0c;也没有打开的选项&#xff0c;设备管理器里也没有&#xff0c;多了个未知USB设备&#xff0c;重启无效&#xff0c;重装蓝牙驱动无效&#xff0c;BIOS中的Bluetooth是开的。 试了网上能找到的所有方法&#xff0c;包括更新wi…