//顯示更多菜單
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>