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

发布时间 - 2026-01-11 01:57:40    点击率:

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; 
  } 

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


# Android  # 点击editview现隐藏  # editview  # Android基础控件(EditView、SeekBar等)的使用方法  # Android控件之EditView常用属性及应用方法  # 输入框  # 的是  # 会有  # 都不  # 希望能  # 谢谢大家  # 必不可少  # getCurrentFocus  # isShouldHideInput  # InputMethodManager  # ACTION_DOWN  # View  # getActivity  # imm  # Context  # INPUT_METHOD_SERVICE  # null  # getSystemService  # strong 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何自定义错误页面(404, 500)?(代码示例)  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Laravel如何实现用户密码重置功能?(完整流程代码)  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  如何在企业微信快速生成手机电脑官网?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  用yum安装MySQLdb模块的步骤方法  如何快速搭建高效WAP手机网站?  Swift开发中switch语句值绑定模式  网站制作价目表怎么做,珍爱网婚介费用多少?  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  个人网站制作流程图片大全,个人网站如何注销?  如何在阿里云ECS服务器部署织梦CMS网站?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Java遍历集合的三种方式  Laravel PHP版本要求一览_Laravel各版本环境要求对照  免费视频制作网站,更新又快又好的免费电影网站?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel如何使用Sanctum进行API认证?(SPA实战)  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  Python函数文档自动校验_规范解析【教程】  青岛网站建设如何选择本地服务器?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  如何用已有域名快速搭建网站?  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何用PHP快速搭建CMS系统?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Linux系统运维自动化项目教程_Ansible批量管理实战  魔方云NAT建站如何实现端口转发?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何在Windows环境下新建FTP站点并设置权限?  详解MySQL数据库的安装与密码配置  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  网页设计与网站制作内容,怎样注册网站?  利用vue写todolist单页应用  如何快速查询网址的建站时间与历史轨迹?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  如何快速生成高效建站系统源代码?  如何在阿里云香港服务器快速搭建网站?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】