Java 弹出菜单出现在左下角

Java 弹出菜单出现在左下角,java,android,xml,menu,Java,Android,Xml,Menu,我试图在我的片段中实现弹出菜单,但结果远远超出我的期望。我在操作栏上有一个按钮,其中一个按钮调用弹出菜单,在这里没有问题。它成功调用,我可以看到弹出菜单。我是这样做的 在片段类中 @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.x) { } else showPopup(view /* or getView() */);

我试图在我的片段中实现弹出菜单,但结果远远超出我的期望。我在操作栏上有一个按钮,其中一个按钮调用弹出菜单,在这里没有问题。它成功调用,我可以看到弹出菜单。我是这样做的

在片段类中

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.x) {           
    } else showPopup(view /* or getView() */);

    return super.onOptionsItemSelected(item);
}

public void showPopup(View v) {
    PopupMenu popupMenu = new PopupMenu(getContext(), v);
    MenuInflater menuInflater = popupMenu.getMenuInflater();
    menuInflater.inflate(R.menu.event_popup, popupMenu.getMenu());
    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem menuItem) {
            return false;
        }
    });
    popupMenu.show();
}
popup_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@+id/a"
    android:icon="@drawable/ic_action_back"
    android:title="a" />

<item android:id="@+id/b"
    android:icon="@drawable/ic_action_back"
    android:title="b" />

片段的动作菜单(包括打开弹出菜单的按钮)


结果就是它的样子。我希望它在右上方。我该怎么办。据我所知,它的默认位置已经是右上角了


您需要为弹出菜单提供正确的锚定视图(本例中为溢出菜单)

试着改变

showPopup(view);

这将使弹出菜单位于顶部。如果它仍然在左侧,请使用

popupMenu.setGravity(Gravity.END);

这里的R.id.U菜单是什么?我的弹出式xml?在这种情况下,它需要id而不是菜单。该id应该是您正在点击以打开弹出菜单的视图的id,可能是操作栏上的溢出菜单图标id。
View menuItemView = MyActivity.this.findViewById(R.id.overflow_menu); // replace with your id
showPopup(menuItemView);
popupMenu.setGravity(Gravity.END);