在RecyclerView Adapter布局项之上显示PopupWindow

时间:2018-05-09 05:47:05

标签: android android-layout android-recyclerview android-popupwindow

我在RecyclerView中显示JSON数据,我在RecyclerView项目上添加了长按操作,显示Dash。我想在长按一下时在每个Recyclerview项目的顶部显示PopupWindow

但是PopupWindow只显示在父屏幕的TOP上,而不是在Recyclerview项目的顶部。

我希望PopupWindow显示在每个RecyclerView项目布局的顶部。

这是我显示PopupWindow的代码

private void PopUpWindowOption(LinearLayout mainLayout)
    {

        View customView = LayoutInflater.from(context).inflate(R.layout.popup,null);

        Button closePopupBtn = (Button) customView.findViewById(R.id.closePopupBtn);

        final PopupWindow popupWindow = new PopupWindow(customView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);



        closePopupBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                popupWindow.dismiss();
                Toast.makeText(context,"clicked",Toast.LENGTH_SHORT).show();
            }
        });

        popupWindow.showAtLocation(mainLayout, Gravity.TOP, 0, 0);

    }

输出

PopupWindow

我如何实现这一目标对我有所帮助。 谢谢

1 个答案:

答案 0 :(得分:2)

您目前使用的是:

popupWindow.showAtLocation(mainLayout, Gravity.TOP, 0, 0);

您想要使用的是:

popupWindow.showAsDropDown(anchor, offsetX, offsetY, gravity);

上面的代码显示了相对于指定锚点视图的弹出窗口。您可以在OnClick或OnLongClick事件时使用项目的视图。 这将显示为相对于项目的下拉列表。如果要在itemView上方显示它,可以通过更改offsetY的值来相应地更改它。 喜欢:

popupWindow.showAsDropDown(anchor, 0, -anchor.getHeight() + popupView.getHeight());