我有一个弹出窗口,我想最初把它放在屏幕的右侧,但仍然允许它拖动。
如果我将重力设置为中心,我可以很好地移动它
LinearLayout l = initNoteLayout(context);
mNotePopup = new PopupWindow(l, 650, 370, true);
l.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.getRawX();
dy = (int) motionEvent.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int x = (int) motionEvent.getRawX();
int y = (int) motionEvent.getRawY();
int left = (x - dx);
int top = (y - dy);
//Log.d("test", "x: " + left + " y: " + top);
mNotePopup.update(left, top, -1, -1);
break;
}
return true;
}
});
mNotePopup.showAtLocation(l, Gravity.CENTER, 0, 0);
这有效,但它在屏幕的中心。如果我设置
mNotePopup.showAtLocation(l, Gravity.RIGHT, 0, 0);
它显示在我想要的位置,我可以上下拖动它,但它粘在右侧。
有任何想法吗?我已经尝试了我能想到的所有重力标志组合
谢谢