Android的 PopuWindow在调用setOutsideTouchable(boolean b)方法时,如果参数为true,那么点击pop以外的区域,都可以正常的隐藏掉pop,但是如果点击了pop以外的地方,点击地方是View,并且View也设置了点击事件,这时候view就会响应其点击事件,但是此时我们又只想pop消失,不想view响应点击事件应该如何做呢?
1、不调用pop的setOutsideTouchable()方法。
2、如果在Activity页面,重写dispatchTouchEvent()方法,如果是在Fragment页面,找到该 fragment依赖的Activity(将该pop对象通过EventBus传递过去),并重写 dispatchTouchEvent()方法。
代码如下:
@Override
public booleandispatchTouchEvent(MotionEventev){
if(mPopupWindow!=null&&mPopupWindow.isShowing()){
mPopupWindow.dismiss();
return true;
}
return super.dispatchTouchEvent(ev);
}
网友评论