3

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

下面是我得到的输出:

这是我得到的输出。

请帮我。

4

3 回答 3

1

我可以解决这个问题。将PopupMenu显示如下ActionBarhttps ://stackoverflow.com/a/29702608/1185087

于 2015-04-17T15:05:17.863 回答
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();
        }

计算要显示弹出窗口的锚点视图或按钮的位置,以设置 Horizo​​ntalOffset(x) 和 VerticalOffset(y)。

于 2016-02-08T11:40:05.360 回答
0

弹出菜单总是锚定到一个视图(按钮)上,并且总是出现在它所连接的视图的上方或下方,这取决于可用的空间。

如果您想根据需要定位菜单,最好使用对话框或弹出窗口。

于 2014-07-27T07:27:28.540 回答