Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何设置弹出菜单的位置?_Android - Fatal编程技术网

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

Android 如何设置弹出菜单的位置?,android,Android,我使用的是弹出菜单,我必须确定我点击的按钮下面的弹出菜单的位置,但是上面我的按钮下面显示的是我所做的代码 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.txtOverflowIconLi

我使用的是弹出菜单,我必须确定我点击的按钮下面的弹出菜单的位置,但是上面我的按钮下面显示的是我所做的代码

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
将显示类似于
ActionBar
中的内容:

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

计算要显示弹出窗口以设置水平偏移(x)和垂直偏移(y)的锚定视图或按钮的位置。

弹出菜单是否为警报对话框?