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

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.这样就实现了点击屏幕上就失去焦点的功能


http://www.kler.cn/a/323857.html

相关文章:

  • 新手教学系列——善用 VSCode 工作区,让开发更高效
  • [GXYCTF2019]BabyUpload--详细解析
  • reduce-scatter:适合分布式计算;Reduce、LayerNorm和Broadcast算子的执行顺序对计算结果的影响,以及它们对资源消耗的影响
  • SQL Server Service Broker完整示例
  • Springboot 使用EasyExcel导出含图片并设置样式的Excel文件
  • 《C语言程序设计现代方法》note-4 基本类型 强制类型转换 类型定义
  • 基于php摄影门户网站
  • 手游和应用出海资讯:三七新游首月收入突破700万元;领英尝试推出游戏功能以增加用户使用时长
  • leetcode:LCR 169. 招式拆解 II(python3解法)
  • 智能Ai语音机器人的应用价值有哪些?
  • 【逐行注释】扩展卡尔曼滤波EKF和粒子滤波PF的效果对比,MATLAB源代码(无需下载,可直接复制)
  • window下 php 安装 lua扩展
  • Docker容器的使用
  • 银河麒麟v10 x86制作openssh 9.9p1 rpm二进制包(内含ssh-copy-id、显示openssl版本) —— 筑梦之路
  • 初始爬虫9
  • SSE协议
  • 如何使用ssm实现校园体育赛事管理系统的设计与实现+vue
  • SpringBoot使用hutool操作FTP
  • 不将“旧”,换新家电的门槛又被TCL拉低了
  • 探索未来IT技术的浩瀚星河:一场跨越时代的数字盛宴
  • docker笔记_数据卷、挂载
  • 【STM32】RTT-Studio中HAL库开发教程七:IIC通信--EEPROM存储器FM24C04
  • Labview helper
  • 用最容易理解的方法,实现LRU、LFU算法
  • 代码随想录训练营第45天|编辑距离
  • 微前端框架之乾坤【qiankun】(一)