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>

 

 

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