首页 > 系统 > Android > 正文

Android中点击隐藏软键盘最佳方法

2019-12-12 03:54:04
字体:
来源:转载
供稿:网友

实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸EditText以外的其他任何区域,软键盘被隐藏;

1、重写dispatchTouchEvent()方法,获取当前触摸事件为DOWN的时候隐藏软键盘

@Override  public boolean dispatchTouchEvent(MotionEvent ev) {    //Finger touch screen event    if (ev.getAction() == MotionEvent.ACTION_DOWN) {      // get current focus,Generally it is EditText      View 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 it        return 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);    }  }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持武林网!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表