簡體   English   中英

彈出菜單顯示在左下方

[英]Popup menu comes out in left bottom

我正在嘗試在片段中實現彈出菜單,但結果遠遠超出了我的期望。 我在操作欄上有一個按鈕,這些按鈕之一稱為彈出菜單,直到這里都沒問題。 它成功調用,我可以看到彈出菜單。 這是我的方法。

在片段類中

@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" />

片段的操作菜單(包括用於打開彈出菜單的按鈕)

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/x"
    android:icon="@drawable/ic_action_back"
    yourapp:showAsAction="ifRoom"
    android:title="" />

<item android:id="@+id/y"
    android:icon="@drawable/ic_action_menu_dot"
    yourapp:showAsAction="ifRoom"
    android:title="" />

</menu>

結果就是它的外觀。 我希望它位於右上方。 我該如何處理。 據我所知,它的默認位置已經在右上角。

在此處輸入圖片說明

您需要為彈出菜單提供適當的錨點視圖(在這種情況下為溢出菜單)。

嘗試改變

showPopup(view);

View menuItemView = MyActivity.this.findViewById(R.id.overflow_menu); // replace with your id
showPopup(menuItemView);

這將彈出菜單置於頂部。 如果仍在左側,請使用

popupMenu.setGravity(Gravity.END);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM