android点击无效验证的解决方法
作者:族语 发布时间:2022-02-28 03:55:08
背景
在写一个东西滑动删除列表的时候,出现了一个问题。我的需求是,左滑然后出现delete,然后点击delete,让该滑块消失。
我在点列表的第一行的时候,左滑,出现delete,点击删除,ok的,完美。然后我点击第三个,同样左滑出现delete,点击delete没有任何反应。
然后我再点击第一个,又可以删除。
模型如下:
子模型:
ps:
黑色的是最外层,蓝色的是在黑块中,然后delete区域在滑块区。滑动是控制蓝色区域的移动。
如果仅仅是这样,我一点也不慌。出现了一些东西,更加我让疑惑。delete的groupview 容器点击是有效的,也就是蓝色区域可点击的,我用它来点击添加item,这同样也给我提供了线索。
在我心中产生了两个个疑问:
为什么只有第一个可以点击, 删除第一个后,第二个变成了第一个,又可以删除?
为什么delete 区域不可点击,而其groupview 可以点击?
解决
对于第一个疑问,我尝试检测是否绑定了,当然不可能去调试看了,因为list嘛,都一个样,查看xy坐标的话,脑壳痛。
// holder.tvMsgRemindDelete 是获取到delete对象
holder.tvMsgRemindDelete.setText("你好啊");
我将拿到的delete view,然后修改它的text。
当然肯定是没用的,我写完的时候就感觉不对劲,然而还抱着一丝希望。
因为如果变成第一个的话,那么是可以点击删除的,肯定绑定了事件哈。
对于第二个疑问,父类groupview 可以点击,我就猜想是否是父类的groupview 阻止了该分发事件。(一般情况是不会阻止的,然而我做的这个滑动较为复杂,自我安慰一下)
是否分发到子元素,涉及到
1. onInterceptTouchEvent
2. dispatchTouchEvent
这两个事件,一个是分发,一个是拦截。
然后找到[ACTION_DOWN,ACTION_UP]判断事件是通过这两个判断的。
然后真的发现:return inView(x, y)
ps:
inView 是我用来判断是当前x,y轴是否在滑块中,也就是蓝色块中。
前面将delete放在外面,如下:
忘记改然后造成了这个问题。
总结
点击无效的时候,不仅要查阅自身事件,同样也需要查询事件分发机制,看看是否哪个土匪拦截了,当然土匪一般是自己创造的。
来源:https://www.cnblogs.com/aoximin/p/12028395.html


猜你喜欢
- springboot项目还是ssm等java常用框架都会有这样的问题,解决办法通用问题场景前端发送Post请求,前端返回400 Bad Re
- 前言 Vitamio是我们团队的诚意之作,除了要将VPlayer打造成Android最好的播放器,也要将Vitamio打造成And
- Java 使用IO流实现大文件的分割与合并文件分割应该算一个比较实用的功能,举例子说明吧比如说:你有一个3G的文件要从一台电脑Copy到另一
- stack介绍和使用stack文档介绍stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插
- java中的线程状态🥇在操作系统层面,一个线程就两个状态:就绪和阻塞状态.但是java中为了在线程阻塞时能够更快速的知晓一个线程阻塞的原因,
- 本文实例为大家分享了Android自定义实现可滑动按钮的具体代码,供大家参考,具体内容如下实现逻辑1.创建一个类继承view类,实现里面的o
- 前言TensorFlow是Google开源的一款人工智能学习系统。为什么叫这个名字呢?Tensor的意思是张量,代表N维数组;Flow的意思
- Android 倒计时一般实现方式:handler+postDelayed() 方式Timer + TimerTask + handler
- 现在很多app一打开就是一个ViewPager,然后可以用手指滑,每滑一次就换一张图,底下还会有圈圈表示说现在滑到第几章~通常这些图片都是放
- 原因:给定的流不支持mark和reset就会报这个错误。获取到一个网络流,这个网络流不允许读写头来回移动,也就不允许mark/reset机制
- idea无法切换分支报错idea拉取项目后,master分支配置完项目基础配置后,生成.iml等文件不受git管理后无法检出其他分支报错如下
- 项目中有这样一个需求,网页上上传了一个视频,需要获取此视频的时长、大小,把这两个数据返回给前
- 前言本文主要讲述如何在同一个窗体内,实现不同功能模块的页面切换。一、准备工作1.搭建一个简单的mvvm项目结构首先搭建一个简单的项目框架,然
- init.rc脚本包含5种类型,Action(动作),Commands(命令), Services(服务),Options(选项), Imp
- 前言上一篇博客内容对 RecyclerView 回收复用机制相关源码进行了分析,本博客从自定义 View 三大流程 measure、layo
- 相关api见:点击进入/* * Copyright 2014 the original author or authors. * * Lic
- 一、百度百科Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防
- 继承和多态派生类具有基类所有非私有数据和行为以及新类自己定义的所有其他数据或行为,即子类具有两个有效类型:子类的类型和它继承的基类的类型。对
- 一)Document介绍API来源:在JDK中javax.xml.*包下使用场景:1、需要知道XML文档所有结构2、需要把文档一些元素排序3
- Druid连接池连接池思想在程序初始化时,提前创建好指定数量的数据库连接对象存储在“池子”中(这个池