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

【Android】修复部分系统拖拽窗口导致弹窗消失的问题

问题

PopupWindow内部对外部事件进行了过滤,如果触发外部事件,会自动关闭弹窗

有些处理得不够好的系统,拖拽边缘时会被误认为是Outside事件来处理,这样就导致了弹窗关闭

方法

对TouchEvent进行拦截,过滤混淆事件

代码
    override fun setContentView(view: View) {super.setContentView(view)interceptOutsideEvent()}@SuppressLint("ClickableViewAccessibility")private fun interceptOutsideEvent() {setTouchInterceptor { v, e ->val decorView = contentView.rootViewif ((e.action == MotionEvent.ACTION_DOWN)) {val outside = e.x < 0 || e.x >= decorView.measuredWidth || e.y < 0 || e.y >= decorView.measuredHeightif (outside) {ToastUtils.show("outside")return@setTouchInterceptor true}} else if (e.action == MotionEvent.ACTION_OUTSIDE) {ToastUtils.show("outside")return@setTouchInterceptor true}return@setTouchInterceptor false}}

http://www.mrgr.cn/news/45170.html

相关文章:

  • tcp连接超时自动断开禁止访问
  • 第2天:熟悉Android Studio补充材料——`MainActivity.kt`解读
  • 一手信息:用ai怎么做短视频赚钱。
  • 双十一适合买什么东西?实用性比较好的好物推荐指南
  • Java AutoCloseable接口
  • fsadsafsa
  • SpringBoot3响应式编程全套-Spring Webflux
  • 【PyTorch学习-1】张量操作|自动求导|神经网络模块|优化器|数据加载与处理|GPU 加速...
  • [自然语言处理]概述
  • 桌面时钟哪个好?今年最热门的桌面时钟主题
  • SpringBoot实现电子文件签字+合同系统!
  • 找出n个自然数(1,2,3,……,n)中取r个数的组合。
  • wsl环境下安装Ubuntu,并下载MySQL5.7
  • 倍思M2s Pro推动TWS蓝牙耳机新风尚:技术革新与未来趋势解析
  • python 实现最小路径和算法
  • 华为 HCIP-Datacom H12-821 题库 (33)
  • 【CKA】CKA第一次考试经验总结
  • 大数据-158 Apache Kylin 安装配置详解 集群模式启动
  • 爱心曲线公式大全
  • 【FastAPI】在FastAPI中实现用户登录和Token认证(JWT)并展示到Swagger UI