Welcome

首页 / 移动开发 / Android / Android中点击隐藏软键盘最佳方法

实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏;
1、重写dispatchTouchEvent()方法,获取当前触摸事件为DOWN的时候隐藏软键盘
@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {//Finger touch screen eventif (ev.getAction() == MotionEvent.ACTION_DOWN) {// get current focus,Generally it is EditTextView view = getCurrentFocus();if (isShouldHideSoftKeyBoard(view, ev)) {hideSoftKeyBoard(view.getWindowToken());}}return super.dispatchTouchEvent(ev);}
2、isShouldHideInput()方法;
/** * Judge what situation hide the soft keyboard,click EditText view should show soft keyboard * @param v Incident event * @param event* @return */private boolean isShouldHideSoftKeyBoard(View view, MotionEvent event) {if (view != null && (view instanceof EditText)) {int[] l = { 0, 0 };view.getLocationInWindow(l);int left = l[0], top = l[1], bottom = top +view.getHeight(), right = left+ view.getWidth();if (event.getX() > left && event.getX() < right&& event.getY() > top && event.getY() < bottom) {// If click the EditText event ,ignore itreturn false;} else {return true;}}// if the focus is EditText,ignore it; return false;}
3、hideSoftKeyBoard()方法;
/** * hide soft keyboard * @param token */private void hideSoftKeyBoard(IBinder token) {if (token != null) {InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);im.hideSoftInputFromWindow(token,InputMethodManager.HIDE_NOT_ALWAYS);}}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!