popmenu 和popWindow

匿名 (未验证) 提交于 2019-12-03 00:20:01

资料来源

https://blog.csdn.net/a379992210/article/details/48423923

https://blog.csdn.net/shanxuyang/article/details/47068487

popMenu

popMenu实现在某个view的上方或者下方显示一个折叠的系统风格的折叠菜单,向上还是向下弹出由系统控制(下方有空间从下方弹出,下方没有空间从上方弹出)


//初始化按钮 mPopMenuBtn = (Button) findViewById(R.id.button3);   //为按钮注册点击事件 public void popMenuBtnOnClick(View view) { //新建一个popMenu实例         mPopMenu = new PopupMenu(this, mPopMenuBtn); //为这个实例的menu加载布局资源         mPopMenu.getMenuInflater().inflate(R.menu.menu_popup_window, mPopMenu.getMenu());         mPopMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {             @Override             public boolean onMenuItemClick(MenuItem item) {                 //do something                 return false;             }         });         mPopMenu.show();     }

popWindow

根popMenu类似

但是默认实现是点击控件后,在控件下方显示一个窗口,这个窗口可以指定大小以及显示位置,但是不能像popMenu一样自动调整从上方还是下方弹出

//初始化按钮 mPopWindowBtn = (Button) findViewById(R.id.button4);  public void popWindowBtnOnClick(View view) { //通过布局文件获取一个View         mPopWindowView = getLayoutInflater().inflate(R.layout.dialog_layout, null); //新建一个window,为这个window填充视图,指定宽度高度,指定是否可以点击 // Focusable 为True,PopupWindow的点击事件才会相应         mPopWindow = new PopupWindow(mPopWindowView, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT, true);         mPopWindow.showAsDropDown(mPopWindowBtn);     }

如果想要控制window弹出的位置

可以通过showAtLocation()来控制

注意窗口中的点击事件需要自己注册,没有类似于popMenu自己的监听器

文章来源: popmenu 和popWindow
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!