如题,
setFocusable(false); 失败
(点击边缘区域的确不会关闭了,但是点击contentView部分 也没有响应了,所以必须让PopupWindow能够获取焦点)
setTouchable(false);失败
(PopupWindow 不能接收Touch事件)
完美解决方案:
setFocusable(true);(可不设置,默认true)
setTouchable(ture);(可不设置,默认true)
setOutsideTouchable(false);
public PopupWindowsManager setOutsideTouchable(final boolean able) {
setOutsideTouchable(able);
setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (!isOutsideTouchable()) {
View mView = getContentView();
if (null != mView)
mView.dispatchTouchEvent(event);
}
return isFocusable() && !isOutsideTouchable();
}
});
return mPopupWindowsManager;
}