失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android 点击EditText外部区域失去焦点的方法

Android 点击EditText外部区域失去焦点的方法

时间:2020-06-22 11:58:19

相关推荐

Android 点击EditText外部区域失去焦点的方法

可能大家都遇到多个输入框,当某个输入框有焦点时,光标显示。当我们点击输入框以外的地方。使输入框焦点消失,隐藏键 盘。

//使editText点击外部时候失去焦点@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {if (ev.getAction() == MotionEvent.ACTION_DOWN) {View v = getCurrentFocus();if (isShouldHideInput(v, ev)) {//点击editText控件外部InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null) {assert v != null;KeyBoardUtil.closeKeyboard(v);//软键盘工具类if (editText != null) {editText.clearFocus();}}}return super.dispatchTouchEvent(ev);}// 必不可少,否则所有的组件都不会有TouchEvent了return getWindow().superDispatchTouchEvent(ev) || onTouchEvent(ev);}EditText editText = null;public boolean isShouldHideInput(View v, MotionEvent event) {if (v != null && (v instanceof EditText)) {editText = (EditText) v;int[] leftTop = {0, 0};//获取输入框当前的location位置v.getLocationInWindow(leftTop);int left = leftTop[0];int top = leftTop[1];int bottom = top + v.getHeight();int right = left + v.getWidth();return !(event.getX() > left && event.getX() < right&& event.getY() > top && event.getY() < bottom);}return false;}

下为KeyBoardUtil类:

/*** 关闭软键盘** @param view*/public static void closeKeyboard(View view) {InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);}

把以上方法写在你的BaseActivity里就好啦~

喜欢(❤ ω ❤)的小伙伴可以点个赞~ 谢谢

如果觉得《Android 点击EditText外部区域失去焦点的方法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。