如何设置弹出菜单的位置?

时间:2013-07-01 12:00:08

标签: android

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

以下是我得到的结果:this is output what i get.

请帮帮我。

3 个答案:

答案 0 :(得分:1)

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

中的{{1}}

答案 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();
        }

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

答案 2 :(得分:0)

弹出菜单始终固定在视图(按钮)上,并始终显示在所连接视图的上方或下方,具体取决于可用空间。

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