我正在使用PopupMenu,我必须修复我点击的按钮下面的弹出菜单的位置,但它显示在上面我的按钮下面是我做的代码。
private final static int ONE = 1;
private final static int TWO = 2;
private final static int THREE = 3;
PopupMenu popupMenu = new PopupMenu(context, convertView.findViewById(R.id.txtOverflowIconList_item_Egov));
popupMenu.getMenu().add(Menu.NONE, ONE, Menu.NONE, "Item 1");
popupMenu.getMenu().add(Menu.NONE, TWO, Menu.NONE, "Item 2");
// popupMenu.getMenu().add(Menu.NONE, THREE, Menu.NONE, "Item 3");
popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case ONE:
Toast.makeText(context, "first ", 100).show();
break;
case TWO:
Toast.makeText(context, "Two ", 100).show();
break;
}
return false;
}
});
holder.txtOverflowIcon.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
popupMenu.show();
}
});
以下是我得到的结果:
请帮帮我。
答案 0 :(得分:1)
我可以解决这个问题。 PopupMenu
会显示ActionBar
:https://stackoverflow.com/a/29702608/1185087
答案 1 :(得分:1)
而不是popupMenu.show();
你需要这样做
popupMenu.show();
if (popupMenu.getDragToOpenListener() instanceof ListPopupWindow.ForwardingListener) {
ListPopupWindow.ForwardingListener listener = (ListPopupWindow.ForwardingListener) popupMenu
.getDragToOpenListener();
listener.getPopup().setHorizontalOffset(x);
listener.getPopup().setVerticalOffset(y);
listener.getPopup().show();
}
计算要显示弹出窗口的锚点视图或按钮的位置,以设置HorizontalOffset(x)和VerticalOffset(y)。
答案 2 :(得分:0)
弹出菜单始终固定在视图(按钮)上,并始终显示在所连接视图的上方或下方,具体取决于可用空间。
如果您想根据需要定位菜单,可以更好地使用对话框或弹出窗口。