Java Android ListView在精确位置单击显示弹出窗口

Java Android ListView在精确位置单击显示弹出窗口,java,dynamic,android-listview,position,popupwindow,Java,Dynamic,Android Listview,Position,Popupwindow,我有一个弹出窗口,当我在列表视图上单击项目时,它显示为一个下拉列表: @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { View v = getLayoutInflater().inflate(R.layout.popup_click_menu, null); final PopupWi

我有一个
弹出窗口
,当我在
列表视图上单击
项目
时,它显示为一个下拉列表:

@Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            View v = getLayoutInflater().inflate(R.layout.popup_click_menu, null);
            final PopupWindow mypopupWindow = new PopupWindow(v,300, RelativeLayout.LayoutParams.WRAP_CONTENT, true);
            mypopupWindow.showAsDropDown(view, -153, 0);
        }
@覆盖
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
视图v=GetLayoutFlater()。充气(R.layout.popup\u单击菜单,空);
final PopupWindow mypopupWindow=新的PopupWindow(v,300,RelativeLayout.LayoutParams.WRAP_内容,true);
mypopupWindow.showAsDropDown(视图,-153,0);
}
结果是:


我的问题是:我想有一个我的弹出窗口的动态位置。因此,如果单击“代码>项目< /代码>的中间,则应该显示在中间。我该怎么做呢?

你可以用
触摸监听器解决这个问题:

list.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View view, MotionEvent event) {
                positionX = (int) event.getX();

                return false; // not consumed; forward to onClick
            }
        });
然后您就有了确切的x位置,您可以通过
onItemClick
移动
PopupWindow

mypopupWindow.showAsDropDown(view, positionX, 0);