温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android 点击editview以外位置实现隐藏输入法

发布时间:2020-08-30 12:47:07 来源:脚本之家 阅读:299 作者:lqh 栏目:移动开发

Android 点击editview以外位置实现隐藏输入法

         实现代码:

@Override 
  public boolean dispatchTouchEvent(MotionEvent ev) { 
    if (ev.getAction() == MotionEvent.ACTION_DOWN) { 
      View v = getActivity().getCurrentFocus(); 
      if (isShouldHideInput(v, ev)) { 
 
        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
        if (imm != null) { 
          imm.hideSoftInputFromWindow(v.getWindowToken(), 0); 
        } 
      } 
      return getActivity().dispatchTouchEvent(ev); 
    } 
    // 必不可少,否则所有的组件都不会有TouchEvent了 
    if (getActivity().getWindow().superDispatchTouchEvent(ev)) { 
      return true; 
    } 
    return getActivity().onTouchEvent(ev); 
  } 
 
  public boolean isShouldHideInput(View v, MotionEvent event) { 
    if (v != null && (v instanceof EditText)) { 
      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(); 
      if (event.getX() > left && event.getX() < right 
          && event.getY() > top && event.getY() < bottom) { 
        // 点击的是输入框区域,保留点击EditText的事件 
        return false; 
      } else { 
        return true; 
      } 
    } 
    return false; 
  } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI