Appcompat PopupMenu的宽度,因为菜单项在 MenuPopupHelper.java中使用此布局abc_popup_menu_item_layout.xml,它将菜单项minWidth设置为196dip.
我们一般情况下很难去更改这个宽度,网上有一种方法是通过反射来更改的,不过我没验证过。使用Application类的onCreate()方法中的反射更新此静态字段:(有兴趣的朋友可以验证一下)
既然PopupMenu 有这么多限制,我们可以通过PopupWindow 来完全自定义一个menu 弹窗 CommPopMenu。这个menu 菜单是通过PopupWindow 包裹一个recyclerView 来完成的。这里不具体介绍实现过程,主要记录一下popupWindow 相对parentView 动态显示在下面还是上面。
这里默认显示在parent View 的下方,当下方位置不够的时候,才显示在上面。当然还可以显示在其他位置,具体可以参考另外一篇博客:https://www.jianshu.com/p/6c32889e6377
后记:好好搬砖,说不定哪天就搬出一座摩天大楼呢,O(∩_∩)O。
网友评论