背景

在写一个东西滑动删除列表的时候,出现了一个问题。我的需求是,左滑然后出现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放在外面,如下:

忘记改然后造成了这个问题。

总结

点击无效的时候,不仅要查阅自身事件,同样也需要查询事件分发机制,看看是否哪个土匪拦截了,当然土匪一般是自己创造的。

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

android点击失效,android点击无效验证的解决方法相关推荐

  1. Android调用系统群发短信,vivo部分手机弹出“无效的地址”解决方法

    Android调用系统群发短信,vivo部分手机弹出"无效的地址"解决方法 第一次写文章,来试试水 之前项目中有一个需求是获取通讯录联系人信息,并展示出来,然后可以选择一个或者多个 ...

  2. android ellipsize 多行,android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法...

    android TextView多行文本(超过3行)使用ellipsize属性无效问题的解决方法 布局文件中的TextView属性 复制代码 代码如下: android:id="@+id/b ...

  3. android删除打开方式,Android 打开方式选定后默认了改不回来?解决方法(三星s7为例)...

    Android 打开方式选定后默认了改不回来?解决方法(三星s7为例) 刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到 ...

  4. android Run模式也会出现Waiting for debugger的解决方法

    android Run模式也会出现"Waiting for debugger"的解决方法 出现"waiting for debugger"窗口是在debug模式 ...

  5. Android DialogFragment 遇到 java.lang.IllegalStateException: Fragment already added: 的解决方法

    Android DialogFragment 遇到 java.lang.IllegalStateException: Fragment already added: 的解决方法 参考文章: (1)An ...

  6. Android Studio Design界面不显示layout控件的解决方法

    Android Studio Design界面不显示layout控件的解决方法 参考文章: (1)Android Studio Design界面不显示layout控件的解决方法 (2)https:// ...

  7. questasim中点击 add wave 后,显示 no data 解决方法

    questasim中点击 add wave 后,显示 no data 解决方法 昨天在questasim中编译sv 文件,顺利出波形.没有关闭软件,打算今天接着研究.却发现没有波形了... 重新点击a ...

  8. Android studio:Button 按钮英文字符自动大写的解决方法

    Android studio:Button 按钮英文字符自动大写的解决方法 一.方法一:styles.xml文件里面添加<item name="textAllCaps"> ...

  9. 双击计算机显示未指定的错误,点击磁盘整理提示未指定的错误的解决方法

    点击磁盘整理提示未指定的错误的解决方法 2017年04月12日 阅读 148 鉴于犯这样的错误,好几次了,这次必须分享下, 方便自己与他人. 解决方法: 重启服务器 其实这种情况的原因一般就是 修改了 ...

最新文章

  1. 树莓派~Ubuntu~OpenCV
  2. pde中微元分析法的主要思想_果然是清北学霸,高中数学解题思想与技巧方法,学会不下145分...
  3. 【SSH框架】之Hibernate系列一
  4. 站在公司和员工的角度看实习员工
  5. vue-cli3+typescript+路由懒加载报错问题
  6. CSS经典书写技巧之(二)
  7. C语言数据结构课程设计(可运行)
  8. 织梦采集侠教程设置免费版本
  9. 5.5mysql_MySQL5.5-MySQL5.5下载 v5.5.60.1官方版 64位/32位-第五资源
  10. 读书笔记(十二)--穷爸爸,富爸爸
  11. Ubuntu下使用“Windows徽标键+R”打开终端
  12. C语言:计算三角形面积与周长
  13. 系统备份和还原(固态系统盘)
  14. JavaSE_day02【类型转换、进制、运算符】
  15. Django2.0-表单(2)-表单的FIeld,验证器,提取错误字段
  16. GIT(分布式版本控制系统)入门
  17. Android模拟器虚拟串口实现串口通信
  18. 业务数据分析的8个流程与常用7个思路
  19. pdf论文中python画的图Type 3 fonts字体不兼容
  20. canon 打印机 android,Canon PRINT Inkjet/SELPHY

热门文章

  1. java转python
  2. Python zip() 函数
  3. Java OOP(Object Oriented Programming)个人理解及总结
  4. ResNet50结构
  5. NVIDIA FFmpeg 转码技术分析
  6. Python:机器视觉与Tesseract介绍
  7. Django 布署6.5
  8. php 导航高亮,zblogphp导航高亮代码分享教程
  9. OverflowError: cannot fit ‘int‘ into an index-sized integer
  10. CountDownTimer 实现验证码倒计时