Android ListView onItemClick 在确切位置显示弹出窗口
Android ListView onItemClick show Popup on exact position
我有一个 PopupWindow
,当我在我的 ListView
上单击 Item
时,它显示为下拉菜单:
@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-position 并且你可以将 PopupWindow
移动 onItemClick
:
mypopupWindow.showAsDropDown(view, positionX, 0);
我有一个 PopupWindow
,当我在我的 ListView
上单击 Item
时,它显示为下拉菜单:
@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-position 并且你可以将 PopupWindow
移动 onItemClick
:
mypopupWindow.showAsDropDown(view, positionX, 0);