PopupMenu的弹出坐标设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PopupMenu的弹出坐标设置相关的知识,希望对你有一定的参考价值。

参考技术A 高版本sdk中PopupMenu包方法出现了变化,此文章未必适用

默认情况下,PopupMenu显示在指定view的上方或下方,但当view的高度太大时会出现下面一种情况,PopupMenu被挤到最边上并且显示不全。微信的效果则是显示在点击坐标上弹出。但是PopupMenu没有设定坐标的方法

通过源码发现PopupMenu.show()方法会执行mPopup.show()。mPopup为MenuPopupHelper类型,再进入MenuPopupHelper的show方法,发现下面还有一个show(int x,int y)方法。所以可以通过反射调用此方法指定PopupMenu的弹出坐标。

在反射时,一开始是这么写的。但是出现了类型转换错误,并且无法导入com.android.internal.view.menu.MenuPopupHelper这个包。后面通过直接获取方法解决了。

具体实现,通过反射调用show(int x,int y)方法。并通过activity的dispatchTouchEvent获取点击的坐标。

以上是关于PopupMenu的弹出坐标设置的主要内容,如果未能解决你的问题,请参考以下文章

PopupMenu 子菜单不尊重重力对齐

Flutter 专题22 图解 PopupMenu 那些事儿 #yyds干货盘点#

Android如何控制PopupMenu弹出菜单的宽度尺寸

DevExpress控件之popupMenu

vb的PopupMenu功能

将圆形彩色背景应用于 Material PopupMenu 组件的正确方法是啥?