1

我有一个弹出窗口,我想最初把它放在屏幕的右侧,但仍然允许它拖动。

如果我将重力设置为中心,我可以很好地移动它

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);

它显示在我想要的位置,我可以上下拖动它,但它粘在右侧。

有任何想法吗?我已经尝试了我能想到的所有重力标志组合

谢谢

4

0 回答 0