Tôi muốn có thể di chuyển PopupWindow khi kéo cảm ứng. Tôi không muốn giao diện người dùng cập nhật khi thả liên lạc. Tôi muốn PopupWindow theo dõi liên lạc của tôi.Android: Cách kéo (di chuyển) PopupWindow?
Đây là điều mà những gì tôi đang làm:
mView = mLayoutInflater.inflate(R.layout.popup,
null);
mPopupWindow = new PopupWindow(mView,
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, false);
mPopupWindow.showAtLocation(parentView, Gravity.CENTER, -5, 30);
mView.setOnTouchListener(new OnTouchListener() {
private int dx = 0;
private int dy = 0;
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
dx = (int) motionEvent.getX();
dy = (int) motionEvent.getY();
break;
case MotionEvent.ACTION_MOVE:
int x = (int) motionEvent.getX();
int y = (int) motionEvent.getY();
int left = (x - dx);
int top = (y - dy);
Log.d("test", "x: " + left + " y: " + top);
mPopupWindow.update(left, top, -1, -1);
break;
}
return true;
}
});
gì xảy ra là, khi tôi kéo cửa sổ popup, nó thấp thoáng lui về vị trí ban đầu và nơi ngón tay của tôi.
Nhấp nháy Logcat Kết quả:
x: -44 y: 4
x: -43 y: 37
x: -46 y: 4
x: -46 y: 38
x: -48 y: 4
x: -47 y: 38
x: -50 y: 4
Nhưng nếu tôi loại bỏ (nhận xét ra) "mPopupWindow.update (left, top, -1, -1);", nó sẽ trả về kết quả chính xác. (Nhưng rõ ràng giao diện người dùng sẽ không cập nhật):
x: -33 y: 0
x: -37 y: 0
x: -41 y: 0
x: -43 y: 3
x: -46 y: 3
x: -50 y: 3
x: -54 y: 4
x: -57 y: 4
Làm cách nào để di chuyển PopupWindow chính xác?