Android 我无法在调用的ImageView下面显示弹出窗口

Android 我无法在调用的ImageView下面显示弹出窗口,android,popupwindow,Android,Popupwindow,我有一个项目列表视图,每个项目都有一个ImageView,单击它会显示一个弹出窗口。问题是我无法显示调用的ImageView下面的窗口。调用pw的ImageView的OnClickListener在我的listadapter类的getView方法中实现 如何在相应的图像视图下显示pw 列表视图 我试图用这段代码来做,但没有成功。永远不会叫onGlobalLayout @Override public View getView(int position, View convertView, fin

我有一个项目列表视图,每个项目都有一个ImageView,单击它会显示一个弹出窗口。问题是我无法显示调用的ImageView下面的窗口。调用pw的ImageView的OnClickListener在我的listadapter类的getView方法中实现

如何在相应的图像视图下显示pw

列表视图

我试图用这段代码来做,但没有成功。永远不会叫onGlobalLayout

@Override public View getView(int position, View convertView, final ViewGroup parent) {

        ...

        // ImageView that show the PopupWindow
        holder.menuOverflow = (ImageView) row.findViewById(R.id.iv_menu_overflow_item_listview_seccion);
        holder.menuOverflow.setTag(position);
        holder.menuOverflow.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(final View v) {
                ViewTreeObserver vto = (holder.menuOverflow).getViewTreeObserver();
                vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

                    @Override
                    public void onGlobalLayout() {
                        y = (int) (holder.menuOverflow).getY();
                    }
                });

                ...

                // Show the PopupWindow
                pw.showAtLocation(parent, Gravity.RIGHT, 0, y);

                // Animation
                Animation anim = AnimationUtils.loadAnimation(activity, R.anim.grow_from_top);
                anim.setDuration(100);
                popupView.startAnimation(anim);
            }
        });

        return row;
    }
由我解决:

int[] _location = new int[2];

// Point (x, y) stored in array _location
// _location[0] = x, _location[1] = y.
v.getLocationOnScreen(_location);

//Initialize the Point with x, and y positions
Point p = new Point();
p.x = _location[0];
p.y = _location[1];

int OFFSET_Y = 30;

// muestra la popup window
pw.showAtLocation(activity.findViewById(R.id.sliding_panel_layout), Gravity.NO_GRAVITY, p.x, p.y + OFFSET_Y);