今天需要给一个控件添加弹出菜单功能。就顺便学习了下popupMenu的使用,记录下来。

它的使用其实也非常的简单,看如下代码

popupMenu = new PopupMenu(MainActivity.this, eText);
popupMenu.getMenuInflater().inflate(R.menu.main,popupMenu.getMenu());
Menu menu = popupMenu.getMenu();
menu.findItem(R.id.search).setVisible(false);
popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override
public boolean onMenuItemClick(MenuItem arg0) {
// TODO Auto-generated method stub
bt3.setText("onMenuItemClick");
return false;
}
});
popupMenu.setOnDismissListener(new OnDismissListener() { @Override
public void onDismiss(PopupMenu arg0) {
// TODO Auto-generated method stub
eText.setText("ondismiss");
}
}); popupMenu.show();

具体步骤

1.创建一个 PopupMenu 实例

//第二个参数绑定的是控件,也就是列表从这个控件的位置弹出
popupMenu = new PopupMenu(MainActivity.this, eText);

2.给这个菜单添加menu列表

//这个是绑定列表,也就是弹出的菜单列表
popupMenu.getMenuInflater().inflate(R.menu.main,popupMenu.getMenu());

3.添加列表监听事件

popupMenu.setOnMenuItemClickListener

4.添加popupmenu消失事件监听

//当菜单消失的时候,这个方法会触发
popupMenu.setOnDismissListener

5.显示列表,这个一定要有,否则不会显示菜单

popupMenu.show();
//隐藏的话
popupMenu.dissmiss();

如果你想操作添加的menu里的item,你可以使用

Menu menu = popupMenu.getMenu();
menu.findItem(R.id.search).setVisible(false);

来得到每一个item来进行操作

PopupMenu-使用实例跟监听事件的更多相关文章

  1. 横向滑动的listview和其中用到的触摸监听事件详解

    一.首先把横向的listview的代码放上来 HorizontalListView: package com.common.cklibrary.utils.myview; import java.ut ...

  2. JAVA JComboBox的监听事件(ActionListener、ItemListener)

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   参考资料: http://263229365.iteye.com/blog/1040329 https://www.ja ...

  3. Android——监听事件总结

    各种监听事件 1.按钮 Button(1)点击监听 btn_1.setOnClickListener(new View.OnClickListener() { (2)长按监听 btn_1.setOnL ...

  4. vue v-on监听事件

    在html或jsp页面中我们总能碰到监听DOM事件来触发javaScript代码,下面我们就简单聊聊Vue.js中的监听事件是怎么处理的. 在vue.js中监听事件是通过v-on指令来实现的,先看一下 ...

  5. vue-wacth监听事件

    2019-08-05   0:20 Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化. 以下实例通过使用 watch 实现计数器:(此时我就想了一下,好像绑定点击事件,也 ...

  6. DOM 事件监听 事件冒泡 事件捕获

    addEventListener() 方法 实例: // 当用户点击按钮时触发监听事件: document.getElementById("myBtn").addEventList ...

  7. node.js绑定监听事件EventEmitter类

    Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下: // 引入 events 模块 var events = r ...

  8. Android中Button的五种监听事件

    简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...

  9. Second Day: 关于Button监听事件的三种方法(匿名类、外部类、继承接口)

    第一种:通过匿名类实现对Button事件的监听 首先在XML文件中拖入一个Button按钮,并设好ID,其次在主文件.java中进行控件初始化(Private声明),随后通过SetOnClickLis ...

随机推荐

  1. Square roots

    Loops are often used in programs that compute numerical results by starting with an approximate answ ...

  2. Windows 绝赞应用(该网站收集了日常好用的工具和软件)

    在我们的电脑使用过程中,或多或少的被流氓软件恶心过.流氓软件之所以这么流氓全是靠他那恐怖的用户数量,基本上形成垄断后,各种流氓行为就一点点体现出来了. 我们也可以选择不用,但对流氓软件来说多你一个不多 ...

  3. javascript 优秀写法

    http://www.csdn.net/article/2014-01-06/2818025-Useful-JavaScript-Tips-Best-Practices

  4. del_archivelog

    #!/usr/bin/env bash                          #  # INTRO : The script for delete physical standby app ...

  5. 3065: 带插入区间K小值_树套树_替罪羊树_权值线段树

    经过周六一天,周一3个小时的晚自习,周二2个小时的疯狂debug,终于凭借自己切掉了这道树套树题. Code: #include <cstdio> #include <algorit ...

  6. NodeJS学习笔记 (23)模块机制-module

    https://github.com/chyingp/nodejs-learning-guide

  7. HDU-1541 Stars 树状数组

    题目链接:https://cn.vjudge.net/problem/HDU-1541 题意 天上有许多星星 现给天空一个平面坐标轴,统计每个星星的level, level是指某一颗星星的左下角(x& ...

  8. [NOIP2015提高组]子串

    题目:洛谷P2679.Vijos P1982.codevs4560.UOJ#149. 题目大意:有长度为n的A串和长度为m的B串.现在要从A串中取出k个互不重叠的子串,使它们按顺序相连后得到B串.问有 ...

  9. MySQL好弱智的一个错误

    在sql中执行select是可以查询 但是在linux命令行下执行就报错 ERROR 1059 (42000): Identifier name 'use db_goforit_stati;selec ...

  10. uikit学习

    *)ur-drop组件:在元素旁边显示一个框 delay-hide:1000(鼠标移开后1000毫秒才唤醒结束操作,默认是800) delay-show:1000(点击后过1000毫秒才会出现东西) ...