-
2019-01-26 00:00:22
1、为控件注册弹出菜单:
TextView t=(TextView) findViewById(R.id.textView1); registerForContextMenu(t);
2、菜单选项在res->menu目录下添加xml的菜单文件:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/send" android:title="@string/send"></item> <item android:id="@+id/change" android:title="@string/change"></item> <item android:id="@+id/delete" android:title="@string/delete"></item> </menu>
3、指定弹出菜单的xml
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO 自动生成的方法存根 //xml配置形式,配置第二步添加的xml的菜单 getMenuInflater().inflate(R.menu.pop, menu); //或者动态配置,不需要第二步添加的菜单 //menu.add(0, Menu.FIRST + 1, 1, R.string.menu_send); //menu.add(0, Menu.FIRST + 2, 2, R.string.menu_change); //menu.add(0, Menu.FIRST + 3, 3, R.string.menu_delete); super.onCreateContextMenu(menu, v, menuInfo); }
4、点击菜单之后响应
@Override public boolean onContextItemSelected(MenuItem item) { // TODO 自动生成的方法存根 //以item判断点击了什么,做对应操作 if(item.getItemId()==R.id.XXX) { } return super.onContextItemSelected(item); }
更多相关内容 -
Qt pushbutton按钮弹出菜单
2019-01-11 17:29:10通过点击Qt中的pushbutton,可以弹出菜单,菜单选项是QAction,可以连接槽完成相应功能。Qt工程是基于Qt5.10.1 32位,Qt Creator 4.5.1(Community) -
js组件仿微信公众号底部弹出菜单
2016-05-13 12:59:32js组件仿微信公众号底部弹出菜单代码 -
Android PopupWindow实现右侧、左侧和底部弹出菜单
2015-09-21 17:15:22Android PopupWindow实现右侧、左侧和底部弹出菜单 效果图:http://blog.csdn.net/jianfengwen/article/details/48629217 -
MFC右键弹出菜单
2012-10-10 11:26:02里边的程序是MFC使用右键菜单的方法,推荐使用CONTEXTMENU事件而非RBUTTONUP,因为RBUTTONUP可能会出现内存问题。 -
Android_ 弹出菜单创建
2022-04-16 16:31:49弹出菜单 如果你的梦想,是拯救苍生,那我的梦想,便唯你一人。 --天官赐福 弹出菜单被固定在调用菜单的视图元素上,并且在一个垂直列表中显示菜单项目 弹出菜单是在API级别11和更高版本上才有效。 弹出菜单是...弹出菜单
如果你的梦想,是拯救苍生,那我的梦想,便唯你一人。 --天官赐福
弹出菜单被固定在调用菜单的视图元素上,并且在一个垂直列表中显示菜单项目
- 弹出菜单是在API级别11和更高版本上才有效。
- 弹出菜单是一个视图元素上弹出的模式菜单
- 如果这个视图元素下方有空间,那么弹出菜单将显示在视图元素的下方,否则会显示在上方。
弹出菜单设计步骤
-
编写Menu配置文件
<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" tools:context="com.example.popupmenudemo.MainActivity"> <item android:id="@+id/copy" android:orderInCategory="100" android:title="@string/copy" /> <item android:id="@+id/past" android:orderInCategory="100" android:title="@string/past" /> </menu>
-
加载PopupMenu
-
通过PopupMenu的构造函数实例化一个PopupMenu对象,传递一个当前上下文对象以及绑定的View控件
/*构建弹出菜单对象,第二个参数表明绑定那个view*/ PopupMenu pm = new PopupMenu(MainActivity.this,view);
-
使用menulnflater.infllate()方法加载配置文件到PopupMenu.getMenu()
/*表明要填充的内容菜单*/ pm.inflate(R.menu.menu_main);
-
在需要的时候调用PopupMenu.shou()方法
/*弹出菜单显示出来*/ pm.show();
- 调用PopupMenu.setOnMenultemClickListener()设置一个PopupMenu选项的选中事件
pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()){ case R.id.copy: Toast.makeText(MainActivity.this,"copy",Toast.LENGTH_LONG).show(); break; case R.id.past: Toast.makeText(MainActivity.this,"past",Toast.LENGTH_LONG).show(); break; } return false; } });
整个java文件实现源码
public class MainActivity extends AppCompatActivity{ Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); button = findViewById(R.id.mybtn); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { /*构建弹出菜单对象,第二个参数表明绑定那个view*/ PopupMenu pm = new PopupMenu(MainActivity.this,view); /*表明要填充的内容菜单*/ pm.inflate(R.menu.menu_main); /*绑定菜单项的点击事件处理*/ pm.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { switch (menuItem.getItemId()){ case R.id.copy: Toast.makeText(MainActivity.this,"copy",Toast.LENGTH_LONG).show(); break; case R.id.past: Toast.makeText(MainActivity.this,"past",Toast.LENGTH_LONG).show(); break; } return false; } }); /*弹出菜单显示出来*/ pm.show(); } }); } }
-
IOS实现弹出菜单效果MenuViewController
2013-09-17 13:45:27IOS 自定义实现弹出菜单效果MenuViewController 背景 景深 弹出菜单 -
Qt点击按钮弹出菜单以及按钮箭头样式的处理
2020-12-06 23:04:06在Qt中点击按钮弹出菜单,这功能很好写,调用QPushButton的setMenu方法即可,... 点击按钮弹出弹出菜单的代码 m_pSetMenu = new QMenu(this); QAction *pAct1 = new QAction("game mode", this); QAction *pAct2...在Qt中点击按钮弹出菜单,这功能很好写,调用QPushButton的setMenu方法即可,但是,这种点击按钮弹出菜单的效果是很不爽的,需要两次点击才弹出菜单,第一次点击按钮右侧出现箭头,第二次点击才弹出菜单,而且菜单不是居中显示,这些问题该如何处理呢。
点击按钮弹出弹出菜单的代码
m_pSetMenu = new QMenu(this); QAction *pAct1 = new QAction("game mode", this); QAction *pAct2 = new QAction("work mode", this); QAction *pAct3 = new QAction("help", this); m_pSetMenu->addAction(pAct1); m_pSetMenu->addAction(pAct2); m_pSetMenu->addAction(pAct3); ui->btnSet->setMenu(m_pSetMenu);
运行结果
我们先把右侧的箭头去掉,修改样式表,即可去掉箭头,如下
ui->btnSet->setStyleSheet("QPushButton::menu-indicator{image:none}");
但是点击两次的问题还是没有解决,设置为根据鼠标的位置弹出:
m_pSetMenu->exec(QPoint(QCursor::pos().x(), QCursor::pos().y()));
本例子全部代码
.h
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QMenu> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); public slots: void on_btnSet_clicked(); private: Ui::Widget *ui; QMenu* m_pSetMenu; }; #endif // WIDGET_H
.cpp
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); m_pSetMenu = new QMenu(this); ui->btnSet->setStyleSheet("QPushButton::menu-indicator{image:none}"); } Widget::~Widget() { delete ui; } void Widget::on_btnSet_clicked() { QAction *pAct1 = new QAction("game mode", this); QAction *pAct2 = new QAction("work mode", this); QAction *pAct3 = new QAction("help", this); m_pSetMenu->addAction(pAct1); m_pSetMenu->addAction(pAct2); m_pSetMenu->addAction(pAct3); ui->btnSet->setMenu(m_pSetMenu); m_pSetMenu->exec(QPoint(QCursor::pos().x(), QCursor::pos().y())); }
运行结果
-
Listview 长按弹出菜单
2012-03-25 22:02:42Listview 长按弹出菜单和事件处理,短按的事件处理,初学者看一下 -
MFC编写高级弹出菜单
2009-08-02 13:08:26高级弹出菜单高级弹出菜单高级弹出菜单高级弹出菜单高级弹出菜单高级弹出菜单 -
Android ListView 长按弹出菜单详解
2010-09-08 23:11:59详细介绍文章在http://hi.baidu.com/dean_wang/blog/item/00b0e247d223b528cefca374.html上面。介绍了Android中的ListView的长按事件如何根据点击的项不一样弹出不同的菜单。这是整个工程源码。 -
html实现右键弹出菜单
2020-09-24 13:58:44css实现右键弹出菜单html代码css代码js代码 html代码 <body oncontextmenu="showMenu(event)"> <div class="contextmenu" id="context"> <ul> <li><a href="javascript:toDetail_();"&...html代码
<body oncontextmenu="showMenu(event)"> <div class="contextmenu" id="context"> <ul> <li><a href="javascript:toDetail_();">详情</a></li> <li><a href="javascript:toTelecontrol_();">操作</a> </li> <li><a href="javascript:;">剪切</a></li> <li><a href="javascript:;">下载</a></li> <li><a href="javascript:;">上传</a></li> </ul> </div> </body>
css代码
ul { list-style: none; } a { text-decoration: none; color: #333; } .contextmenu { width: 200px; border: 1px solid #999; box-shadow: 3px 3px 3px #ccc; background-color: #fff; position: absolute; top: 10px; left: 10px; display: none; z-index:9999999 } .contextmenu li { height: 40px; line-height: 40px; } .contextmenu li a { display: block; padding: 0 30px; } .contextmenu li a:hover { background-color: #ccc; font-weight: bold; color: #fff; }
js代码
function showMenu(env){ env.preventDefault(); //env 表示event事件 // 兼容event事件写法 var e = env || window.event; // 获取菜单,让菜单显示出来 var context = document.getElementById("context"); context.style.display = "block"; // 让菜单随着鼠标的移动而移动 // 获取鼠标的坐标 var x = e.clientX; var y = e.clientY; // 调整宽度和高度 context.style.left =x-200+"px" //Math.min(w-202,x)+"px"; context.style.top = y+"px" //Math.min(h-230,y)+"px"; // return false可以关闭系统默认菜单 return false; }; // 当鼠标点击后关闭右键菜单 document.onclick = function(){ closeMenu() }; function closeMenu(){ var contextmenu = document.getElementById("context"); contextmenu.style.display = "none"; }
-
Qt入门系列--弹出菜单
2019-12-04 16:30:10弹出菜单与菜单栏处理基本相似,涉及的类为QMenu和QAction,一个弹出菜单可以看作一个菜单栏的菜单项,本篇内容介绍如何在窗口创建弹出菜单,先上效果图: 左侧图片为窗口区域单击右键显示效果,与菜单栏的菜单项... -
Qt点击按钮弹出菜单
2020-07-26 21:57:23QToolButton *menuBtn = new QToolButton(this); menuBtn->...//计算菜单弹出位置 connect(menuBtn, &QToolButton::clicked, [=](){ int x = menuBtn->x(); int y = menuBtn->y(); QPoi -
Flutter 弹出菜单实现(不是显示的菜单按钮,隐式的)showMenu
2021-11-05 15:40:45隐式的菜单效果图代码实现 没有完全的理解,但是怎么说呢,好歹算是实现了。???? 效果图 简单在页面中有一个图片,长按图片的时候呢就会触发菜单的显示。 效果图 代码实现 一个带有长按功能的按钮 GestureDetector... -
Android 点击按钮弹出菜单
2020-03-22 10:54:52Android 点击按钮弹出菜单 效果图: 1、创建menu文件夹,新建main.xml文件 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <... -
C#TreeView窗体版点击右键弹出菜单+直接修改名称+新建节点
2011-12-07 14:41:24C#TreeView窗体版点击右键弹出菜单+直接修改名称+新建节点。与之前写的有所区别。可以直接在节点上进行修改! -
QT鼠标右键弹出菜单选项
2020-10-28 16:46:56老规矩,直接开始步骤 第一步:在UI界面设置按钮的contextMenuPolicy 属性选为CustomContextMenu 保存 第二步:右键按钮转到槽,信号选择customContextMenuRequested 第三步:转到槽后,在槽函数中搞如下代码 ... -
Android中简单的弹出菜单
2018-09-22 11:35:05Android中简单的弹出菜单 这次我们使用后台代码来动态添加按钮,并关联事件。点击该按钮后弹出类似下图的菜单,点击第1个选项后,自动弹出小对话框来。 步骤如下: 1、首先添加ar -
鼠标右键弹出菜单
2019-05-22 08:42:53鼠标右键弹出菜单 开发工具与关键技术:MVC 作者:盘洪源 撰写时间:2019年5月22日星期三 想必有很多人会遇到一些页面在点击右键的时候会弹出来一个菜单栏,这个并不是系统的那个菜单栏,而是自定义的菜单,这个效果... -
Vue中右键弹出菜单(vue-contextmenu)
2021-04-06 14:54:57点击右键,弹出菜单 安装: npm install vue-contextmenu --save 引入: import VueContextMenu from 'vue-contextmenu' Vue.use(VueContextMenu) 使用: <template> <div id="app" @contextmenu=... -
android底部弹出菜单
2015-07-16 17:12:14android底部弹出菜单,采用PopupWindow实现,使用简单。 -
易语言实现右键弹出菜单功能
2018-09-02 15:22:44易语言右键弹出子菜单下载地址 -
flutter 弹出菜单按钮组件PopupMenuButton、弹出菜单组件方法showMenu
2020-04-19 22:47:36弹出菜单按钮组件: 不能设置位置,点击按钮后从按钮的地方展开菜单,会覆盖按钮 PopupMenuButton( itemBuilder: (context){ return [ PopupMenuItem( 菜单内容 value, 点击后回调中传递的值 ... -
jquery弹出菜单
2011-01-28 06:04:35jquery弹出菜单 jquery 弹出菜单 jquery弹出菜单 jquery 弹出菜单 jquery弹出菜单 jquery 弹出菜单 -
触屏手机端阻止长按弹出选择文字以及弹出菜单,img标签同理
2018-08-09 08:56:27/*触屏手机端阻止长按弹出选择文字以及弹出菜单*/ *{ /*阻止文本选中*/ -webkit-user-select: none; user-select: none; /*阻止菜单弹出*/ -webkit-touch-callout: none; /*touch-callout去掉,安卓不支持须... -
vue之menu弹出菜单效果
2018-11-16 09:58:31}, index * 100)//通过定时器的方式,达到一个一个弹出来的效果 } else { //item恢复 el.style.transitionDuration = '200ms'; el.style.transform = `translate(0,0)`; } }, clickMenu(item, index) { //... -
VB的鼠标右键弹出菜单
2008-07-18 11:06:28Windows的程序大都有弹出式菜单。比如用户在桌面上单击右键,就会调出快捷菜单。在程序中使用弹出式菜单,可以让程序更加人性化,操作更加简便。但VB自带的菜单编辑器只能设置窗体顶端的普通菜单。 那么我们如何... -
uni-app 从底部向上弹出菜单
2021-03-27 14:35:54我在项目需求中需要实现从底部向上弹窗菜单效果功能 在uni-app给出原生组件showActionSheet发现设置标题, 在uni-app项目中正常显示, 但是在微信小程序中不显示了, 我这里还有一个问题就是标题太长, 而... -
ARCGISEngine中右键弹出菜单栏
2018-09-29 14:59:37IToolbarMenu mapPopMenu = null; mapPopMenu = new ToolbarMenu();//这个很关键,主要应用SDK封装的工具类似于C#的OpenDialog if (e.button == 2) { mapPopMenu.AddItem(new ...//弹出显示菜单 }