大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在日常开发中,长按某个view出现个菜单是很常见的需求,Google 也给我们提供了一些组件来实现,比如PopupMenu。但是在实际使用中还是发现他无法满足我们的所有需求。
创新互联网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了做网站、成都网站设计,成都网站设计,一元广告,成都做网站选创新互联,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。比如:产品要求长按菜单出现在手指按下的位置,额 这就头疼了,PopupMenu只能展示在view的底部或者头部。还有个问题如果你的view过长超过一屏,那么 PopupMenu 就无法显示在屏幕里了。
所以没办法,只能硬着头皮自己撸一个menu了。 在日常使用中发现微信的 弹窗菜单 很符合要求,所以就模仿微信来撸一个了。
实现思路
•继承 PopupWindow 来实现长按弹窗
•获取当前按下 位置,传给 view 来显示
具体实现
•第一个很好实现,我用的是recyclerView 来实现布局的,而且传入的资源是 menu。而且另一个好处就是控制某些 item的可见(因为我自己项目中有这样需求,所以考虑进去了)
private Menu mMenu; @NonNull @SuppressLint("RestrictedApi") public Menu getMenu() { if (mMenu == null) { mMenu = new MenuBuilder(mContext); } return mMenu; } @NonNull public MenuInflater getMenuInflater() { return new MenuInflater(mContext); } public void inflate(@MenuRes int menuRes) { getMenuInflater().inflate(menuRes, getMenu()); }