Android PopupMenu简单使用

额,现在app里经常要使用弹出菜单,起初我用popupWindow来处理,虽说能处理,但明显不是最适合菜单展示的方式啊,后来改用PopupMenu来实现,发现变得好简单啦,下面给个简单使用例子,相信你很快能看明白:

 @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
    private void showPopUpWindow(View anchor) {
        PopupMenu popupMenu=new PopupMenu(context,anchor);
        popupMenu.inflate(R.menu.menu_groupbuy_actionbar);
        setIconEnabled(popupMenu.getMenu());
        popupMenu.show();
        popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem menuItem) {
                switch (menuItem.getItemId()){
                    case R.id.menu_myorder:
                        OrderListActivity.actionStart(context);
                        break;
                    case R.id.menu_search:
                        SearchActivity.activityStart(context, SearchActivity.SearchableType.GROUP_BUY);
                        break;
                }
                return false;
            }
        });
    }

其中,PopupMenu构造方法第二个参数要给一个它的锚点,就是这个menu会以这个view为挂载展开。然后我们把写好的menu的xml用inflate装进去。这里有个setIconEnabled是为了解决现在android4.0以上版本中配置了menu的icon,但是icon不会显示,其方法如下:

private void setIconEnabled(Menu menu) {
        try {
            Class clazz=Class.forName("com.android.internal.view.menu.MenuBuilder");
            Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
            m.setAccessible(true);
            m.invoke(menu,true);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

不过使用时注意了,可能需要SDKAPI在14以上,若要在低版本使用,请参考supportv7包中的PopupMenu的使用,不过和这个使用方法也大同小异了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值