判断一个点击动作,是否在指定视图范围内方法:
/**
* 是否点击的是提示视图范围内
*
* @param view 要判断的视图
* @param ev 点击的Down事件
*/
private boolean inRangeOfBindView(View view, MotionEvent ev) {
int[] location = new int[2];
view.getLocationOnScreen(location);
int x = location[0];
int y = location[1];
return !(ev.getX() < x) && !(ev.getX() > (x + view.getWidth())) && !(ev.getY() < y) && !(ev.getY() > (y + view.getHeight()));
}
重写事件处理方法
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
View view = getCurrentFocus();
if (isHideInput(view, event)) {
barEditText.postDelayed(() -> {
barEditText.needClearFocus();
KeyboardUtil.hideInputMethod(barEditText);
}, 100);
}
}
return super.dispatchTouchEvent(event);
}