当前位置: 移动技术网 > 移动技术>移动开发>Android > Android中点击隐藏软键盘最佳方法

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

2019年07月24日  | 移动技术网移动技术  | 我要评论

实现功能:点击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);
    }
  }

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网