我们都知道要想让popwindow点击外部区域不消失必须设置
setOutsideTouchable(false)和setFocusable(false),但是这样设置后会引发子view获取不到焦点的问题.比如现在pw上有一个控件editText.点击editText弹出键盘
这样设置后,无论怎么点击edittext键盘都不会弹出来.有人就要说了,我们直接监听edittext的点击事件用代码弹出键盘.这样也是没用的
要想二者兼得必须要处理popwindow的ontouch事件
public void setOutsideTouchable(final boolean 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();
}
});
}