Android全局点击非edittext区域隐藏键盘

本文介绍了如何在Android应用中实现全局点击非EditText区域时自动隐藏软键盘,通过在BaseActivity中重写dispatchTouchEvent方法,判断点击位置及当前焦点控件类型,提升用户交互体验。
摘要由CSDN通过智能技术生成

主要原理:在baseactivity中重写dispatchTouchEvent时间,拦截用户点击区域,获取当前焦点所在控件,如果该控件是edittextview并且,点击点在该控件区域外,就隐藏掉键盘,提升用户体验

@Override public boolean dispatchTouchEvent(MotionEvent ev) {
    if (ev.getAction() == MotionEvent.ACTION_DOWN) {
      View v = getCurrentFocus();
      if (isShouldHideInput(v, ev)) {
        InputMethodManager imm =
            (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        if (imm != null) {
          imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
        }
      }
      return super.dispatchTouchEvent(ev);
    }
    if (getWindow().superDispatchTouchEvent(ev)) {
      return true;
    }
    return onTouchEvent(ev);
  }

  public boolean isShouldHideInput(View view, MotionEvent event) {
    if ((view instanceof EditText)) {
      int[] leftTop = { 0, 0 };
      view.getLocationInWindow(leftTop);
      int left = leftTop[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值