问题描述
我有一个PopupWindow
,当我在Item
上单击ListView
时显示为下拉列表:
@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);
}
结果是这样的:
我的问题是:我想让弹出窗口具有动态位置。因此,如果我单击Item
的中间,那么它应该显示在中间。我该怎么办?
解决方法
您可以使用TouchListener
解决此问题:
list.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View view,MotionEvent event) {
positionX = (int) event.getX();
return false; // not consumed; forward to onClick
}
});
然后您具有精确的x位置,可以将PopupWindow
移动onItemClick
:
mypopupWindow.showAsDropDown(view,positionX,0);