我在操作栏中有一个按钮,当我单击它时,它会显示一个包含项目的弹出菜单,我想防止在单击某个项目时关闭弹出窗口;这是我用于弹出窗口的代码:
PopupMenu popup = new PopupMenu(this, popupButton);
try {
Field[] fields = popup.getClass().getDeclaredFields();
for (Field field : fields) {
if ("mPopup".equals(field.getName())) {
field.setAccessible(true);
Object menuPopupHelper = field.get(popup);
Class<?> classPopupHelper = Class.forName(menuPopupHelper.getClass().getName());
Method setForceIcons = classPopupHelper.getMethod("setForceShowIcon", boolean.class);
setForceIcons.invoke(menuPopupHelper, true);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
popup.getMenuInflater().inflate(R.menu.menu_story, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
//code
return true ;
});
答案 0 :(得分:0)
如果您不希望单击后立即关闭弹出菜单,则需要创建自己的弹出窗口而不是标准弹出菜单。例如,基于AlertDialog
。
由于在documentation中,因此我不会给出代码示例。
答案 1 :(得分:-1)
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
//Your code
popup.show(); // Add this to show popup before returning true
return true ;
});