释放双眼,带上耳机,听听看~!

需求

在实际项目开发中,有这样的需求,长按整个ViewGroup响应长按事件,例如长按弹出对话框或者popwindow等等

问题

针对这个需求出现两种情况:

1,当ViewGroup中无任何子view的时候,长按事件按压ViewGroup任何位置都可以响应.

2,当ViewGroup中有子view的时候,例如包含TextView,长按子view的时候,就无法响应ViewGroup的长按事件,长按子view以外的区域可以影响其长按事件.

显然这样是不符合我们的需求,那么如何解决此问题呢?

解决方案

1,给子view也添加长按事件,调用父view的长按逻辑

特点:这种方式可以实现,但是子view较多的情况下,需要添加较多长按事件,会增加代码复杂度

2,给子view设置触摸监听,在回调方法抬起的时候,响应view的长按事件

特点:需要处理多个子view的触摸监听.

代码示意:

tvContent.setOnTouchListener(new View.OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_UP) {

getViewGroup().performLongClick();

}

return false;

}

});

3,父view拦截长按事件,不让他传递给子view.

4,更好的方案有待思考和研究,欢迎提供宝贵意见!!!

android触摸事件透传,Android中父View穿透子View响应长按事件相关推荐

  1. android点击事件透传,点击事件透传机制

    点击屏幕的事件传递是: Activity将事件交给 所属的Window,如果返回true,整个事件循环就结束了,返回false意味着事件没人处理,所有view的onTouchevent ,都反回了fa ...

  2. 微信小程序——1、自定义顶部渐变色2、封装好的自定义顶部栏(父组件获取子组件的点击事件)

    1.自定义顶部渐变色 第一种使用代码实现渐变 效果图: .json代码 "navigationStyle":"custom" .wxml代码 <view ...

  3. mfc获取子窗口句柄_前端设计-JavaScript中父窗口与子窗口间的通信

    父窗体与子窗体之间的通信 在之前文章讲解windows程序设计过程中,我们曾描述了windows程序窗口之间通信与控制实现方法与过程,如窗体之间参数传递等.本文主要从Web程序开发前端JavaScri ...

  4. artdialog4.1.7 中父页面给子页面传值

    artdialog4.1.7中父页面给子页面传值时看了一些网友的解决方法: 在父页面声明全局变量 var returnValue=" ",子页面用art.dialog.opener ...

  5. Javacript中父节点、子节点、兄节点的简单用法[0306]

    Javacript中父节点.子节点.兄节点的简单用法[0306] 一.开解: 本文主要讲父子兄节点的简单用法,至于怎么取得节点,可以参考文[0301]和[0302],视情况而定,有时候我们分别会用到父 ...

  6. Android客户端Push 透传与通知栏

    目前的消息推送方式主要有两种:通知和透传. 什么是透传?透传即是透明传送,即传送网络无论传输业务如何,只负责将需要传送的业务传送到目的节点,同时保证传输的质量即可,而不对传输的业务进行处理.透传消息, ...

  7. Android Jenkins 参数透传配置

    Step 1 设置参数 Step 2 透传设置 在Build Steps(构建步骤中)选择高级 如图,在上面Project properties 中配置对应想透传的参数如: BUILD_TYPE=${ ...

  8. android环信透传,环信高级篇-透传和拓展

    由于App开发中遇到了:送花和打赏,但是我们使用的即时通讯是环信,并没有直接的接口实现,而是需要我们使用里面比较特殊的技术:拓展和透传 透传:传递用户头像和昵称 拓展:实现非正常消息(打赏,送花,送礼 ...

  9. android x86 GPU透传,显卡虚拟化方案之GPU透传(一)背景介绍篇

    之前的文章提到使用conda来进行AI开发环境的搭建,可以看出在主机(host)上搭建复杂的AI环境,有时非常耗费时间和精力.其实我们可以采用一种精简的方式,那就是使用虚拟化技术. 比如我们可以使用d ...

最新文章

  1. C#判断文件是否存在方法
  2. VS 2017显示“高级保存选项”命令操作方法
  3. Android 缓存目录 Context.getExternalFilesDir()和Context.getExternalCacheDir()方法
  4. 10个常用的代码简写技术,看懂一种是入门,全部看懂是大神!
  5. E打开https网站时,提示此网站的安全证书有问题(证书无效)
  6. 西建大历年电子与通信工程复试真题_历年复试试题回忆
  7. 美工一流的个人网站源码系列(2),不漂亮你可以不下载!
  8. java 会话共享_java – servlet如何工作?实例化,会话,共享变量和多线程
  9. Mybatis_接口编程
  10. 《从Paxos到Zookeeper:分布式一致性原理与实践》第一章读书笔记
  11. 经验 | 我的研究生这三年
  12. springmvc 表单中文乱码解决方案
  13. 网易云信 web demo体验-会议
  14. centos 替换阿里源
  15. 用Sqldbx 连接Mysql
  16. css的背景颜色有哪些,css背景颜色、背景图片,以及列表的多种样式
  17. java 分层处理解耦_后端分层架构如何解耦?
  18. 面部识别法案正式通过?微软总裁赞不绝口——华盛顿州重大突破!
  19. Unity3D学习记录——爆炸特效
  20. matlab下载保姆级安装教程,哪个版本比较好些?

热门文章

  1. simulink显示多个数据_Stateflow数据介绍(一)
  2. html5编辑器自带js,javaScript编辑器-HBulider
  3. java 保护类型_Java 类的受保护访问(学习 Java 编程语言 046)
  4. python播放音乐同步歌词_python终端播放音乐同定制步显示本地或网络歌词
  5. mysql模板引擎有哪些_ecshop用的是什么模板引擎?
  6. 计算机安装了打印驱动无法打印,安装打印机的时候为什么电脑无法正常识别打印机?...
  7. opencv三维重建_使用iPhone相机和OpenCV来完成3D重建(第一部分)
  8. arcengine 加载地图不显示_用LSV下载城市地图、全省地图教程
  9. java怎么给类中的私有变量赋值_Java核心技术笔记分享------第二章 类与对象
  10. 如何系统学习机器学习?