PopupMenu 的使用

 //显示更多菜单
    private void showMoreMenu(View v) {

        PopupMenu popupMenu = new PopupMenu(getContext(), v);
        popupMenu.inflate(R.menu.menu_more);
        if (isBlackMenu)
            popupMenu.getMenu().findItem(R.id.block).setTitle("移除黑名单");
        else
            popupMenu.getMenu().findItem(R.id.block).setTitle("拉黑");
        popupMenu.setOnMenuItemClickListener(item -> {
            int i = item.getItemId();
            if (i == R.id.remark) {
                MiscUtil.toastShortShow(mContext,"点击备注");
            } else if (i == R.id.del_follow) {
                delFollow(toUserInfo.getUserId());
            } else if (i == R.id.block) {
                if (isBlackMenu)
                    removeFromBlackMenu();
                else
                    pullBlackMenu();
            } else if (i == R.id.report) {
                MiscUtil.toastShortShow(mContext,"点击举报");
            }
            return false;
        });
        if (toUserInfo.isFollow()) {
            popupMenu.getMenu().findItem(R.id.del_follow).setVisible(true);
        }

// 通过反射来显示图片
        try {
            Field field = popupMenu.getClass().getDeclaredField("mPopup");
            field.setAccessible(true);
            MenuPopupHelper helper = (MenuPopupHelper) field.get(popupMenu);
            helper.setForceShowIcon(true);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

        popupMenu.show();
    }

 

new PopupMenu(getContext(), v) ,其中的v指的是依赖的view,根据这个view来确定位置。

在res中创建menu文件夹

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:icon="@mipmap/bg_no_data"
        android:id="@+id/remark"
        android:title="设置备注" />
    <item
        android:id="@+id/del_follow"
        android:title="取消关注"
        android:visible="false" />
    <item
        android:id="@+id/block"
        android:title="拉黑" />
    <item
        android:id="@+id/report"
        android:title="举报" />

</menu>

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章