美文网首页工作生活
点击空白区域,让 软键盘消失

点击空白区域,让 软键盘消失

作者: 黑键手记 | 来源:发表于2019-07-04 13:56 被阅读0次
  如题,如果是 Fragment 中的 edittext ,将下放代码放到 对应的 Activity 即可
   @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {

        // 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
        View v = getCurrentFocus();

        if (isShouldHideInput(v, ev)) {
            hideSoftInput(v.getWindowToken());
            }
        }
        return super.dispatchTouchEvent(ev);
      }

    private boolean isShouldHideInput(View v, MotionEvent event) {
      if (v != null && (v instanceof EditText)) {
        int[] l = { 0, 0 };
          v.getLocationInWindow(l);
          int left = l[0], top = l[1], bottom = top + v.getHeight(), right = ScreenUtils.getScreenWidth();
          if (event.getX() > left && event.getX() < right
                  && event.getY() > top && event.getY() < bottom) {
              // 点击EditText的事件,忽略它。
              return false;
          } else {
              return true;
          }
      }
      // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点
      return false;
  }


  private void hideSoftInput(IBinder token) {
      if (token != null) {
          InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
          im.hideSoftInputFromWindow(token,
                  InputMethodManager.HIDE_NOT_ALWAYS);
      }
  }

相关文章

网友评论

    本文标题:点击空白区域,让 软键盘消失

    本文链接:https://www.haomeiwen.com/subject/chnlhctx.html