PopupMenu 未在 RecyclerView 中正确定位

PopupMenu is not positioned properly inside RecyclerView

我正在制作一个 Android 应用程序来将数据加载到 RecyclerView 中,其中的 ImageView 作为溢出按钮。当用户单击它时,会显示一个带有可供选择的选项的 PopupMenu。我设法展示了它,但位置似乎不对。请看截图。

只有前两项似乎没问题。以下是源代码:

view.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
    final PopupMenu popupMenu = new PopupMenu(context, view);
    final Menu menu = popupMenu.getMenu();

    popupMenu.getMenuInflater().inflate(R.menu.menu_item_action, menu);
    popupMenu.setOnMenuItemClickListener(onMenuItemClickListener);

    switch (Global.listMode) {
      case Global.LIST_STYLE_NORMAL: {
        menu.findItem(R.id.action_delete).setVisible(false);
        break;
      }
      case Global.LIST_STYLE_FAVORITE: {
        menu.findItem(R.id.action_add_to_favorite).setVisible(false);
        break;
      }
      case Global.LIST_STYLE_WATCH_LIST: {
        menu.findItem(R.id.action_add_to_watch_list).setVisible(false);
        break;
      }
      case Global.LIST_STYLE_DOWNLOAD: {
        menu.findItem(R.id.action_download).setVisible(false);
        break;
      }
    }

    itemPosition = (int) view.getTag(R.id.tag_item_position);
    popupMenu.show();
  }
});

你们能指出我的问题吗,我花了几个小时搜索但现在仍然一无所获。

P/S: 被点击的按钮用红色圆圈标记。

如有任何帮助,我们将不胜感激!

我不太确定,但似乎讨论了类似的问题 并且已经有一个可接受的答案。希望它能帮助您解决问题。只是偶然发现了您的问题并看到了 link 中讨论的主题,并认为它可能对您也有帮助。

幸运的是,我刚刚找到了解决问题的方法:

  • 使用 android.widget.PopupMenu 而不是 android.support.v7.widget.PopupMenu
  • final PopupMenu popupMenu = new PopupMenu(context, view);替换为final PopupMenu popupMenu = new PopupMenu(context, v);

老实说,我不知道为什么,试试吧,瞧!