簡體   English   中英

如何設置彈出菜單的位置?

[英]How to set the position of Pop Up Menu?

我正在使用 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();
    }
});

以下是我得到的輸出:

這是我得到的輸出。

請幫我。

我可以解決那個問題。 PopupMenu將像ActionBarhttps : //stackoverflow.com/a/29702608/1185087

而不是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();
        }

計算要顯示彈出窗口的錨視圖或按鈕的位置以設置 Horizo​​ntalOffset(x) 和 VerticalOffset(y)。

彈出菜單總是錨定到一個視圖(按鈕),並且總是出現在它所附加的視圖的上方或下方,這取決於可用空間。

如果您想根據需要定位菜單,請為此目的更好地使用對話框或彈出窗口。

暫無
暫無

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

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