博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PopupMenu
阅读量:5966 次
发布时间:2019-06-19

本文共 1546 字,大约阅读时间需要 5 分钟。

PopupMenuPopupWindow类似(但并不是继承关系), 可以显示固定在一个View下方, 且默认实现了弹出动画, 所以过渡也没有像PopupWindow那么僵硬. 可以说是为了实现弹出式菜单而封装的类.

该类在Android3.0(API11)开始添加, 对于3.0以前提供android.support.v7.widget.PopupMenu向下兼容包.

PopupMenu的方法其实很少, 所以全部看一遍.

创建

创建并显示一个PopupMenu分为三个步骤

  1. 创建PopupMenu对象
  2. 填充一个Menu xml文件
  3. 显示

构造方法

PopupMenu (Context context, //上下文                View anchor) // 显示固定的View对象PopupMenu (Context context,                 View anchor,                 int gravity) // 显示在View的左下方还是右下方. 默认左下方PopupMenu (Context context,                 View anchor,                 int gravity,                 int popupStyleAttr,                 int popupStyleRes)复制代码

填充Menu

一般填充方式

popupMenu.getMenuInflater().inflate(menuRes, popupMenu.getMenu()).复制代码

Android4.0(API14)后新增的简化方法:

void inflate (int menuRes) // 直接传入Menu文件id即可复制代码

显示和隐藏

void show () // 显示void dismiss ()  // 隐藏复制代码

监听器

PopupMenu关闭事件监听

void setOnDismissListener (PopupMenu.OnDismissListener listener)复制代码

菜单选项事件监听

void setOnMenuItemClickListener (PopupMenu.OnMenuItemClickListener listener)复制代码

滑动开打

这个方法蛮有意思的. 可以通过拖拽显示固定的View来打开PopupMenu.

View.OnTouchListener getDragToOpenListener ()复制代码

我觉得我需要演示下

public void onClick() {PopupMenu popupMenu = new PopupMenu(this, mToolbar);popupMenu.getMenuInflater().inflate(R.menu.popup_menu, popupMenu.getMenu());mToolbar.setOnTouchListener(popupMenu.getDragToOpenListener());popupMenu.show();}复制代码

奇怪的是还得先点击打开PopupMenu后才能使用这个滑动选择

其他方法

设置PopupMenu显示位置

该方法PopupWindow同样有, 支持Gravity.LEFTGravity.RIGHT, 这类setGravity的方法基本上都是Android6.0后添加的.

void setGravity (int gravity)int getGravity ()复制代码

转载地址:http://nvtax.baihongyu.com/

你可能感兴趣的文章
背道而驰or殊途同归?区块链与云计算未来趋势
查看>>
Spring整合JMS(四)——事务管理
查看>>
设计模式学习笔记(七)之模板方法模式(Template Method)
查看>>
我的友情链接
查看>>
主流原型工具可用性测试横向比较
查看>>
我的友情链接
查看>>
Guava——使用Preconditions做参数校验
查看>>
iSCSI存储用作Proxmox VE的LVM共享存储
查看>>
Sonnet Suite Pro v11.52-ISO 1CD(三维高频电子设计)
查看>>
linux网络
查看>>
我的友情链接
查看>>
linux 系统调优步骤 例
查看>>
显式方法与隐式方法
查看>>
Android防火墙+流量统计代码
查看>>
通知中心
查看>>
我的友情链接
查看>>
MVC中的三个模块
查看>>
Line: 220 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
查看>>
oracle 常用命令大汇总
查看>>
2012年春运火车票电话和网上订票技巧、攻略
查看>>