Android PopupMenu开错位置

时间:2016-11-17 14:03:37

标签: android listview popup position

我有一个listView,其中每个项目都有一个按钮,可以打开带有选项的PopupMenu。

大多数情况下,这些菜单在错误的位置打开(有时它们在正确的位置打开),这些随机打开甚至不一致。

enter image description here

enter image description here

选择菜单中的选项会使用我最初尝试打开菜单的位置上的正确项目操作

我的代码:

settings.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            PopupMenu popup = new PopupMenu(context, settings);
            popup.getMenuInflater().inflate(R.menu.notes_menu, popup.getMenu());
            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {

                    String itemTitle = item.getTitle().toString();

                    switch (itemTitle) {

                        case "Add Pictures": 

                            //adding pictures

                        case "Delete":

                            //deleting

                        case "Share":

                            //sharing

                    }

                    return true;
                }
            });

            popup.show(); 


        }
    });

settings按钮位于listView适配器的public View getView(final int position, View convertView, ViewGroup parent)方法内。

非常感谢任何帮助! ^^

1 个答案:

答案 0 :(得分:2)

在设置onClickListener之前创建弹出窗口,并且只在onClick()中调用popup.show()。