//显示更多菜单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("移除黑名单");elsepopupMenu.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();elsepullBlackMenu();} 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"><itemandroid:icon="@mipmap/bg_no_data"android:id="@+id/remark"android:title="设置备注" /><itemandroid:id="@+id/del_follow"android:title="取消关注"android:visible="false" /><itemandroid:id="@+id/block"android:title="拉黑" /><itemandroid:id="@+id/report"android:title="举报" /></menu>