给View设置 wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
FLAG_WATCH_OUTSIDE_TOUCH 这个是可以获得一次外部焦点,当获取外部焦点的时候 把View再改成
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
Log.v("====", "onTouch ACTION_OUTSIDE");
handler.post(new Runnable() {
@Override
public void run() {
if (view.getParent() != null) {
wmParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;//不允许获取焦点
wm.updateViewLayout(view, wmParams);
}
}
});
}
return false;
}
});
这样的话就可以获得外部的事件