今天需要给一个控件添加弹出菜单功能。就顺便学习了下popupMenu的使用,记录下来。
它的使用其实也非常的简单,看如下代码
popupMenu = new PopupMenu(MainActivity.this, eText); popupMenu.getMenuInflater().inflate(R.menu.main,popupMenu.getMenu()); Menu menu = popupMenu.getMenu(); menu.findItem(R.id.search).setVisible(false); popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem arg0) { // TODO Auto-generated method stub bt3.setText("onMenuItemClick"); return false; } }); popupMenu.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss(PopupMenu arg0) { // TODO Auto-generated method stub eText.setText("ondismiss"); } }); popupMenu.show();
具体步骤
1.创建一个 PopupMenu 实例
//第二个参数绑定的是控件,也就是列表从这个控件的位置弹出 popupMenu = new PopupMenu(MainActivity.this, eText);
2.给这个菜单添加menu列表
//这个是绑定列表,也就是弹出的菜单列表 popupMenu.getMenuInflater().inflate(R.menu.main,popupMenu.getMenu());
3.添加列表监听事件
popupMenu.setOnMenuItemClickListener
4.添加popupmenu消失事件监听
//当菜单消失的时候,这个方法会触发 popupMenu.setOnDismissListener
5.显示列表,这个一定要有,否则不会显示菜单
popupMenu.show(); //隐藏的话 popupMenu.dissmiss();
如果你想操作添加的menu里的item,你可以使用
Menu menu = popupMenu.getMenu(); menu.findItem(R.id.search).setVisible(false);
来得到每一个item来进行操作