android PopupWindow showAtLocation移动初始位置

时间:2013-02-13 09:44:27

标签: android popupwindow

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

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

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

它出现在我想要的地方,我可以上下拖动但是它粘在右侧。

任何想法?我已经尝试了我能想到的每一种重力旗帜组合

感谢

0 个答案:

没有答案