读书人

android PopupWindow怎么拖动

发布时间: 2013-08-27 10:20:47 作者: rapoo

android PopupWindow如何拖动
有人做过类似的效果吗,我现在写的是可以拖动,但是第二次拖动时会从原始位置开始移动。
下面这代码实现的是,按住PopupWindow中的按钮,移动可实现整个PopupWindow的移动,初始化为Gravity.BOTTOM的位置,第一次因为该window在此位置,所以移动是正确的,但第二次开始,点击按钮开始移动的那一瞬间,就会突然跳到最开始的位置,然后才移动

private void createPopup()
{
LayoutInflater flater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
View view = flater.inflate(R.layout.pop, null);

view.findViewById(R.id.button2).setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
int action = event.getAction();
switch(action)
{
case MotionEvent.ACTION_DOWN:
lastX = (int)event.getRawX();
lastY = (int)event.getRawY();
break;

case MotionEvent.ACTION_MOVE:
int dx = (int)event.getRawX() - lastX;
int dy = (int)event.getRawY() - lastY;
popup.update(dx, dy, -1, -1);

break;

}
return true;
}
});

popup = new PopupWindow(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
popup.setFocusable(false);
popup.setTouchable(true);
popup.setOutsideTouchable(true);
//popup.showAsDropDown(findViewById(R.id.ding), 100, 100);
popup.showAtLocation(findViewById(R.id.button1), Gravity.BOTTOM, 0, 0);

//
popup.update();
}

[解决办法]
试试把int dx int dy 变成成员变量。 现在是局部变量。

[解决办法]
这个问题如果调试的话应该很好解决。多半出现在popup.update这个方法上,你在ontouchend方法里重新设置下其位置setposition。

读书人网 >Android

热点推荐