我在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);
}
输出
我如何实现这一目标对我有所帮助。 谢谢
答案 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());