在开发过程中,遇到需要点击空白处隐藏掉布局或者键盘的需求。这个功能很简单,我们只需要重写
dispatchTouchEvent()这个方法就可以了。尝试过其他的方法,但是最后还是觉得这个比较简单。现在记录一下具体的使用方法。
1、重写方法,判断动作为点击操作
@Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { // 隐藏语音布局 isHide(mWktVoiceLayout, ev); // 隐藏键盘 KeyBoardUtils.hideKeyBoard(this, mWktInput); } return super.dispatchTouchEvent(ev); }
2、隐藏布局的方法里主要是对点击位置进行判断,如果点击的位置在布局范围内,则不执行,如果在布局范围外,则执行隐藏操作。注:对键盘的操作没有进行判断
// 点击隐藏布局,计算点击的位置 private void isHide(View view, MotionEvent ev) { int[] location = {0, 0}; // 获取当前view在屏幕中离四边的边距 view.getLocationInWindow(location); int left = location[0], top = location[1], right = view.getWidth(), bottom = top + view.getHeight(); // 判断点击位置是否在view布局范围内