StickyGridHeader中的弹出窗口显示错误的位置

R4j

我使用StickyGridHeaders库创建像snapfish一样的Gridview 这是我预期的布局:

在此处输入图片说明

触摸标题视图(红色箭头)上的按钮而不是复选框时,我会显示一个弹出窗口。问题是我的弹出窗口始终显示错误的位置。从调试窗口中,我可以看到它与sticky header具有相同的位置,但是我通过使用来关闭了GridView的sticky headerStickyGridHeadersGridView.setAreHeadersSticky(false);

这是我的适配器头:

    public View getHeaderView(final int position, View convertView, ViewGroup parent) {
            final HeaderViewHolder viewHolder;
            if(convertView == null){
                convertView = inflater.inflate(R.layout.item_header_gallery, null);
                viewHolder = new HeaderViewHolder();
                viewHolder.tvImagePrice = (TextView) convertView.findViewById(R.id.tvImagePrice);
                viewHolder.btnTouch = (Button) convertView.findViewById(R.id.btnTouch);
                convertView.setTag(viewHolder);
            }else{
                viewHolder = (HeaderViewHolder) convertView.getTag();       
            }

            ImageGroup item = headers.get(position);    
            viewHolder.tvImagePrice.setText(item.getPriceString());

            viewHolder.btnTouch.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    int[] location      = new int[2];

                    viewHolder.btnTouch.getLocationOnScreen(location);
                    // location always is [905,59] for every header item
                    System.out.println("location = " + location[0] + "," + location[1]);

                    // show popup on this location:
                    mPopupWindow.showAtLocation(v, Gravity.NO_GRAVITY, location[0], location[1]);
                }
            });

            return convertView;
        }

如果我在子视图中显示弹出窗口而不是标题,则弹出窗口正确显示。有什么不对?

R4j

看起来无法正确获取标题项目的位置,因为此库在StickyGridHeadersBaseAdapterWrapper中使用了附加和分离标题视图

HeaderFillerView v = getHeaderFillerView(adapterPosition.mHeader, convertView, parent);
View view = mDelegate.getHeaderView(adapterPosition.mHeader, (View)v.getTag(), parent);
mGridView.detachHeader((View) v.getTag());
v.setTag(view);
mGridView.attachHeader(view);
convertView = v;
mLastHeaderViewSeen = v;
v.forceLayout();

实际上,它是通过反射调用dispatchAttachedToWindowdispatchDetachedFromWindow视图类的。如上所述,这导致在整个屏幕上出现错误的窗口nosacky
现在,我退出并用Header项目和Gridview项目用Listview替换此StickyGridHeaders。这不是最好的方法,但是它可以工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显示设置弹出窗口的位置?

来自分类Dev

通知弹出窗口未显示在Chrome中

来自分类Dev

如何在MFC中更改弹出窗口的默认位置

来自分类Dev

代码块显示建筑错误弹出窗口

来自分类Dev

在静态UITableViewCell中显示UIButton的弹出窗口

来自分类Dev

如何在活动中显示弹出窗口?

来自分类Dev

弹出窗口不显示

来自分类Dev

iOS 9.1中未显示位置服务权限弹出窗口

来自分类Dev

条带弹出窗口显示错误的货币

来自分类Dev

弹出窗口未显示

来自分类Dev

如何在ViewController中显示弹出窗口

来自分类Dev

弹出窗口显示IllegalStateException

来自分类Dev

如何显示弹出窗口

来自分类Dev

从列表中显示不同的弹出窗口。

来自分类Dev

流星Facebook登录“您正在使用大型浏览器窗口或标签中的'弹出'的显示类型”错误

来自分类Dev

弹出验证错误消息以主窗体显示,而不是在弹出窗口中显示如何解决它

来自分类Dev

单击显示弹出窗口

来自分类Dev

JQueryMobile中的弹出窗口/工具提示位置

来自分类Dev

在角度捕获403错误并显示一个弹出窗口

来自分类Dev

代码块显示建筑错误弹出窗口

来自分类Dev

在静态UITableViewCell中显示UIButton的弹出窗口

来自分类Dev

弹出窗口不显示

来自分类Dev

文件中带有SVG元素的Bootstrap弹出窗口位置错误

来自分类Dev

显示模态弹出窗口

来自分类Dev

如何在弹出窗口中显示jquery验证错误消息?

来自分类Dev

在Excel中显示通知弹出窗口

来自分类Dev

在弹出窗口中显示鼠标位置

来自分类Dev

显示登录弹出窗口

来自分类Dev

从 DNN 中的弹出窗口显示弹出窗口