当前位置: 首页 > news >正文

Android 点击其他组件让输入框失去焦点

1.需求背景

在用户填写基本信息的界面里,在输入框唤起键盘后,有时候又会弹起选择框(PickerViewDialog),如果用户在没有关闭键盘的情况下,点击PickerView,此时的焦点仍然在上个输入框,此时选择框选择关闭后,部分机型的软键盘又弹了起来,这样给用户的交互体验自然是不好的。

2.解决办法

之前想的是,在点击选择框时,让输入框失去焦点,但是有多个选择框和输入框的情况下,这样代码就太冗余了。于是就想到了,在dispatchTouchEvent里进行事件处理。

3.实现代码

    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {when (ev.action) {MotionEvent.ACTION_DOWN -> {//获得当前聚焦控件,Activity有此方法val view = currentFocus //如果当前聚焦的是输入框if (view is EditText) {val rect = Rect()//获得控件在屏幕上的显示区域view.getGlobalVisibleRect(rect) //如果点击的位置不是输入框if (!rect.contains(ev.rawX.toInt(), ev.rawY.toInt())) {view.clearFocus()//失去焦点}}}}return super.dispatchTouchEvent(ev)}

4.这样就实现了点击屏幕上就失去焦点的功能

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 创意实现!在uni-app小程序商品详情页轮播中嵌入视频播放功能
  • 苹果更新过时产品:三款 Mac 成“古董”,九款 Mac 彻底“停产”
  • exebios提取工具通用exebios分离工具exe转编程器bios文件软件bios文件解密提取工具exe原厂bios提取烧录器bios芯片文件工具
  • Navicat Premium Lite 免费版 | 数据库连接类型简介
  • 如何更新Oracle表 LONG型的大文本学习
  • 解决mac下 Android Studio gradle 下载很慢,如何手动配置
  • 免费下载6组简历模板,让HR一眼相中你!
  • Redis——持久化策略
  • 速盾:高防cdn除了快还有什么好处?
  • 【R语言】fs 工具功能速查
  • K8s安装部署(v1.28)--超详细(cri-docker作为运行时)
  • 漫谈由标准输入\输出\错误输出引发的思考
  • 老挝旅游如何解决沟通问题?《老挝语翻译通》app支持语音识别翻译功能,能有效解决语言不同的痛点
  • 在Ubuntu 16.04上安装Anaconda Python发行版的方法
  • Java:小数操作
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • IP路由与转发
  • Js基础——数据类型之Null和Undefined
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • mysql_config not found
  • node学习系列之简单文件上传
  • web标准化(下)
  • 程序员该如何有效的找工作?
  • 从零搭建Koa2 Server
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #Z0458. 树的中心2
  • #数学建模# 线性规划问题的Matlab求解
  • (27)4.8 习题课
  • (4)Elastix图像配准:3D图像
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (分享)自己整理的一些简单awk实用语句
  • (三)Honghu Cloud云架构一定时调度平台
  • (转)c++ std::pair 与 std::make
  • .NET 5种线程安全集合
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET 设计模式初探
  • .NET 事件模型教程(二)
  • .net下的富文本编辑器FCKeditor的配置方法
  • ??Nginx实现会话保持_Nginx会话保持与Redis的结合_Nginx实现四层负载均衡
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [@Controller]4 详解@ModelAttribute
  • [Android]Android开发入门之HelloWorld
  • [BJDCTF2020]The mystery of ip1
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [C]编译和预处理详解
  • [C++] 深入理解面向对象编程特性 : 继承
  • [C++]spdlog学习
  • [ComfyUI进阶教程] animatediff视频提示词书写要点
  • [LLM 学习笔记] Transformer 基础
  • [MFC] MFC消息机制的补充
  • [NKCTF 2024]web解析