首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果存在子视图的单击侦听器,则不会调用父视图上的OnTouchListener

在Android开发中,视图(View)是构建用户界面的基本元素。视图可以包含其他视图,形成视图层次结构。当用户在屏幕上点击一个视图时,系统会触发相应的事件。其中,单击事件是最常见的用户交互事件之一。

在视图层次结构中,如果一个父视图包含了子视图,并且同时为父视图和子视图设置了触摸事件监听器(OnTouchListener),那么当用户点击子视图时,只会调用子视图的触摸事件监听器,而不会调用父视图的触摸事件监听器。

这是因为在Android中,触摸事件是按照视图层次结构从上到下依次分发的。当用户点击一个视图时,系统会从最上层的父视图开始,逐级向下遍历,直到找到被点击的子视图。然后,系统会调用该子视图的触摸事件监听器处理点击事件,并停止向下遍历。

这种设计可以方便地实现视图的事件分发和处理。如果需要在父视图和子视图上都处理点击事件,可以在子视图的触摸事件监听器中返回false,以允许事件继续向上分发,从而调用父视图的触摸事件监听器。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云数据库 MySQL 版(CMYSQL):https://cloud.tencent.com/product/cmysql
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 移动开发(移动推送、移动分析、移动测试):https://cloud.tencent.com/product/mobile
  • 区块链(BCS):https://cloud.tencent.com/product/bcs
  • 元宇宙(Tencent XR):https://cloud.tencent.com/product/tencentxr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Art of Android Development Reading Notes 3

若返回值为True事件传递到自己onTouchEvent(); 若返回值为False传递到viewdispatchTouchEvent()。...优先级比onTouchEvent要高 如果给一个view设置了OnTouchListener,那么OnTouchListeneronTouch方法会被回调。...;如果它消耗ACTION_DOWN事件,但是不消耗其他类型事件,那么这个点击事件消失,容器onTouchEvent方法不会被调用,当前view依然可以收到后续事件,但是这些事件最后都会传递给Activity...(9)事件传递过程总是先传递给元素,然后再由元素分发给view,通过requestDisallowInterceptTouchEvent方法可以在元素中干预元素事件分发过程,但是ACTION_DOWN...,所有的事件都传递给元素,如果子元素需要此事件就直接消耗掉,否则就交给容器来处理。

42110

前端开发必备之Chrome开发者工具(上篇)

通过该视图控件,你可以设定下面两种模式: 自适应。 使口可以通过任意一侧大手柄随意调整大小 特定设备。...点击可以选择不同模板。 编辑 DOM Elements 面板中 DOM 树视图可以显示当前网页 DOM 结构。...例如,如果您要查看 元素日志输出,并修改该环境中存在某个变量,您需要从 Execution Context Selector 下拉菜单中选中该元素。...DOM更改断点 当您想要更改DOM节点或其节点代码时,使用DOM更改断点 设置DOM更改断点: 切换到 Elements 面板。 找到您想设置断点元素并右键单击该元素。...输入你想要打断字符串。当此字符串出现在XHR请求URL中任何位置时,DevTools暂停。 按Enter确认。 ?

8.2K111

Android高频面试专题 - 提升篇(三)事件分发机制

请看下面的图你就懂更彻底了: ? 2、ACTION_CANCEL什么时候触发 如果某一个View处理了Down事件,那么随之而来Move和Up事件也交给它处理。...如果return super.onInterceptTouchEvent(ev), 事件拦截分两种情况:   1.如果该View存在View且点击到了该View, 则不拦截, 继续分发 给View...onTouchEvent:方法返回值为true表示当前视图可以处理对应事件;返回值为false表示当前视图不处理这个事件,它会被传递给视图onTouchEvent方法进行处理。...如果View不消耗ACTION_DOWN以外事件,那么这个点击事件消失,此时元素onTouchEvent并不会调用,并且当前View可以持续收到后续事件,最终这些消失点击事件传递给Activity...内部拦截法:指容器不拦截任何事件,而将所有的事件都传递给容器,如果子容器需要此事件就直接消耗,否则就交由容器进行处理。

2.2K42

Vue前端面试2021-017

在组件嵌套关系中,组件一般通过自定义属性形式将数据传递给组件 Vue中规范了组件传递数据给组件,建议单向数据绑定;如果子组件中需要使用组件数据作为初始值,可以通过data()中自定义变量进行数据接受...;如果子组件中需要组件数据作为运算数据,可以通过computed计算属性进行数据获取!...5、组件如何给组件传值?传递数据时有什么注意事项?...组件是通过自定义事件将数据传递给组件,组件需要监听子组件自定义事件,然后通过事件处理函数获取组件传递数据 自定义事件名称必须全部匹配情况下才能触发和正确监听,包括大小写字符不存在自动转换操作...,处理相关业务逻辑 计算属性一般都是针对单个或者多个数据变化进行监听和处理配置对象,当监听一个或者多个变量数据发生变化时,调用执行计算属性位置自动运算得到结果;如果数据没有发生变化,调用执行时会直接使用上次缓存计算结果

1K20

一文读懂Android View事件分发机制

返回false表示View以及View均没有消费事件,将调用ViewonTouchEvent方法 public boolean onInterceptTouchEvent(MotionEvent...ViewGroup也是View)而言,如果设置了onTouchListener,那么OnTouchListener方法中onTouch方法会被回调。...我们之前说过,事件到达View会调用dispatchTouchEvent方法,如果View是ViewGroup那么先判断是否拦截该事件。 ?...结论: ViewGroup遍历所有View去寻找能够处理点击事件View(可见,没有播放动画,点击事件坐标落在View内部)最终调用ViewdispatchTouchEvent方法处理事件...通过上面代码我们可以看到View先判断是否设置了OnTouchListener如果设置了OnTouchListener并且onTouch方法返回了true,那么onTouchEvent不会被调用

31820

Vue 面试知识点

缓存组件,使用场景:频繁切换,不需要重复渲染v-for 中添加唯一 key为了高效更新虚拟 DOM,根据 key 值去判断某个值是否修改,如果修改,则重新渲染这一项,否则复用之前元素,添加方式.../comments/Tab')}计算属性和侦听器computed 有缓存,data 不变则不会重新计算,监听值类型可正常拿到 oldValwatch 一般用于监听数据变化同时,进行异步操作或者是比较大开销...,可以调用 methods 中方法、改变 data 中数据,使用场景:发送请求获取数据beforeMountmounted 页面已经渲染完毕,可以获取到 el 中 DOM 元素,进行 DOM 操作...beforeUpdateupdatedbeforeDestroy 清除定时器、自定义事件destroyed父子组件创建、更新顺序组件 created 组件 created 组件 mounted 组件...mounted组件 beforeUpdate 组件 beforeUpdate 组件 updated 组件 updated组件之间传值通信组件给组件传值通过 props组件给组件传值通过

99910

unity3d新手入门必备教程

你可以在层次视图(Hierarchy)单击任何物体,然后移动你鼠标到场景视图上并按F键。 场景视图将移动以居中显示当前选择物体。这个命令是非常有用,你将在场景编辑时候经常使用它。    ...如果你不能在场景视图中同时看到所有物体,你可以使用层次来选择并检视它们。    物体层次 Unity使用一个称为化(Parenting)概念。任何物体都可以成为另一个物体。...一个物体可以从它物体继承移动和旋转。Parenting对于组织场景,角色,接口元素或者保持场景整洁有很大用处。单击一个物体并将其拖动到另一个物体上可以建立父子关系。...一个游戏物体可以有任意多个子物体,但是只能有一个物体。物体也可以是其它物体物体。你可以很容易在层次视图中分辨一个物体是不是一个物体。...武器相机 Clear Flags应该被设置为仅深度。这将保持场景显示在屏幕上,但是丢弃所有不存在 3D空间所有信息。

6.3K10

手把手教你读懂源码,ViewTouch事件传递流程详细剖析

cancelAndClearTouchTargets方法 首先判断目标View,如果存在则进行统一清除操作。...当我们在ViewGroup重写该方法返回为true执行事件拦截逻辑时候,可以在View中通过调用requestDisallowInterceptTouchEvent方法,重新设置ViewGroup...接着获取该ViewGroup中子View个数,得到该事件发生位置,获取Viewlist集合preorderedList,再通过for循环倒序遍历当前ViewGroup所有视图。...isTransformedTouchPointInView方法 判断视图有scrollTo或scrollBy造成滚动偏移也需要计算在内,并判断触摸点是否在当前视图内。...OnTouchListener监听器 当前View一旦执行了setOnTouchListener方法,该ViewmOnTouchListener就不为空,就会调用OnTouchListener

74270

这 10 个技巧让你成为一个更好 Vue 开发者

这就是动态指令派上用场地方了: image.png 重用同一路由组件 有时,我们不同路由共用某些时,如果在这些路由之间切换,则默认情况下,共享组件将不会重新渲染,因为Vue 出于性能原因重用该组件...但是,如果我们仍然希望重新渲染这些组件,则可以通过在路由器视图组件中提供:key属性来实现重新渲染。...image.png 从父类到子类所有 props 这是一个非常酷功能,可将所有prop从父组件传递到组件。 如果我们有另一个组件包装器组件,这将特别方便。...因为,我们不必一个一个将prop传递给组件,而是一次传递所有prop: image.png 上面的可以代替下面的做法 image.png 从父类到子类所有事件侦听器 如果子组件不在组件根目录下...,则可以将所有事件侦听器从父组件传递到组件,如下所示: image.png 如果子组件位于其父组件根目录下,则默认情况下它将获得那些组件,因此不需要此小技巧。

1.2K30

用纯 JavaScript 撸一个 MVC 框架

如果这是你想要创建程序并且创建了整个系统,那真的让事情变得过于复杂。关键是要尝试在较小层面上理解它。...我们要做第一件事就是每次调用时删除所有 todo 节点。然后检查是否存在待办事项。如果不这样做,我们将会得到一个空列表消息。...按照处理单击删除按钮方式处理此方法,并调用模型方法。...设置事件监听器 现在我们有了这三个 handler ,但控制器仍然不知道应该什么时候调用它们。必须把事件侦听器放在视图 DOM 元素上。...现在我们可以将这些添加到视图事件侦听器中。当你在 contenteditable 元素输入时,input 事件会被触发,离开contenteditable元素时,focusout 触发。

3.2K41

Qt编写安防视频监控系统28-摄像机点位

一、前言 摄像机点位功能主要是在图片地图和在线离线地图上设置对应摄像机位置,然后双击可以实时预览对应摄像机视频,在图片地图上拖动摄像机图标到对应位置,系统自动保存位置信息,在网页地图上摄像机位置...,需要异步更新,比如先从右侧选择需要更新位置摄像机,然后在地图上鼠标按下,自动传回当前位置经纬度信息,然后单击更新设备位置按钮即可,自动js异步更新执行代码,更新完成以后会自动同步到另外地图,...显示在图标旁边文本 为空则不显示 addr 表示标注点地址 title 表示弹框信息html格式标题 tips 表示弹框信息html格式内容 width 表示弹框宽度...封装了百度地图,视图切换,运动轨迹,设备点位,鼠标按下获取经纬度等。 支持图片地图,设备按钮可以在图片地图上自由拖动自动保存位置信息。 在百度地图和图片地图上,双击视频可以预览摄像头实时视频。...双击摄像机节点自动播放视频,双击节点自动依次添加视频,自动跳到下一个,双击节点自动添加该节点下所有视频。 摄像机节点拖曳到对应窗体播放视频,同时支持拖曳本地文件直接播放。

1.7K00

事件高级

3. addEventlistener (type, listener[, useCapture])第三个参数如果是true,示在事件捕 获阶段调用事件处理程序;如果是false (不写默认就是false...常情况下terget 和 this是一致, 但有一种情况不同,那就是在事件冒泡时(父子元素有相同事件,单击元素,元素事件处理函数也会被触发执行), 这时候this指向元素,因为它是绑定事件元素对象...说白了就是,不给元素注册事件,给元素注册事件,把处理代码在元素事件中执行。 生活中代理: 咱们班有100个学生,快递员有100个快递, 如果一个个送花费时间较长。...js事件中代理: ? 事件委托原理 给元素注册事件,利用事件冒泡,当元素事件触发,冒泡到元素,然后去控制相应元素。... // 事件委托核心原理:给节点添加侦听器, 利用事件冒泡影响每一个节点 var ul = document.querySelector

1.5K41

浅析 JavaScript 中事件委托

有没有更好方法? 幸运是,如果我们使用“事件委托”模式的话,侦听多个元素上事件只需要一个事件侦听器。 事件委托使用事件传播机制细节。想要要了解事件委托工作原理,应该先了解什么是事件传播。...如果参数是 true 或 {capture:true},那么侦听器将会侦听**捕获阶段(capture phase)**事件。...那么事件传播是怎样帮助捕获多个按钮事件呢? 该算法很简单:把事件侦听器附加到按钮级,并在单击按钮时捕获冒泡事件。这就是事件委托工作方式。...你不需要把委托事件监听器直接附加到按钮上,而是可以委托监听 。单击按钮时,元素侦听器将会捕获冒泡事件(还记得前面所说事件传播吗?)。...该事件侦听器也会对按钮单击做出反应,因为按钮单击事件冒泡通过祖先元素(由于事件传播)。 步骤 3:用 event.target 选择目标元素 单击按钮时,将会用event 对象参数调用处理函数。

2.6K30

【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )

方法中触发调用 if (child == null) 分支 // handled = super.dispatchTouchEvent(event) 方法 , 调用事件分发方法...方法中 , 传入组件为空 , 表示事件被拦截了 , 或消费不成功 , 此时需要消费自己触摸事件 , 调用类 View dispatchTouchEvent 方法就是消费自己触摸事件 ;...* 该方法是正式分发触摸事件方法 * 注意参数中传入了当前正在被遍历 child 组件 * 如果事件被拦截 , 或者没有被消费掉 , 则不会对 mFirstTouchTarget...* 该方法是正式分发触摸事件方法 * 注意参数中传入了当前正在被遍历 child 组件 * 如果事件被拦截 , 或者没有被消费掉 , 则不会对 mFirstTouchTarget...child 组件为空 // 调用分发方法 handled = super.dispatchTouchEvent(event

1.2K20

限时分享Android面试中事件分发高级技巧

事件拦截:在事件分发过程中,如果某个ViewGroup拦截了事件,则该事件将不再向下传递给View,而是由ViewGroup自己处理或分发给View。...事件处理:当事件到达目标View时,该View会调用自身事件处理方法(例如onTouchEvent)来处理事件,如果事件被处理,则事件分发结束;如果事件未被处理,则事件向上返回,由View继续处理...因此,即使View调用了requestDisallowInterceptTouchEvent(true),View仍有机会在down事件中决定是否拦截触摸事件,因为在触发down事件时候重置影响...如果在down事件之后,View调用了requestDisallowInterceptTouchEvent(true),View就会在接下来move、up等事件中不再拦截触摸事件,从而确保View...当没有设置 OnTouchListener,或者OnTouchListeneronTouch方法返回false时,系统会调用ViewonTouchEvent方法来处理触摸事件。

12510

事件高级

那么是先执行元素单击事件,还是先执行div单击事件 ??? 事件流描述是从页面中接收事件顺序。 事件发生时会在元素节点之间按照特定顺序传播,这个传播过程即DOM事件流。...常情况下terget 和 this是一致, 但有一种情况不同,那就是在事件冒泡时(父子元素有相同事件,单击元素,元素事件处理函数也会被触发执行), 这时候this指向元素,因为它是绑定事件元素对象...说白了就是,不给元素注册事件,给元素注册事件,把处理代码在元素事件中执行。 生活中代理: ? js事件中代理: ?...(给元素注册事件,利用事件冒泡,当元素事件触发,冒泡到元素,然后去控制相应元素。)...                // 事件委托核心原理:给节点添加侦听器, 利用事件冒泡影响每一个节点        var ul = document.querySelector

1.3K20

Android View事件分发详解

2.同一个事件序列,只能被一个view拦截处理,如果它不消耗down事件,那么其他事件也不会交给它处理,而且一旦它处理了down事件,以后事件便不会调用onInterceptTouchEvent此方法判断是否拦截...3.如果view不消耗除down以外其他事件,那么这个点击事件消失,此时元素onTouchEvent并不会被调用,并且当前view可以持续接收后续事件,最终这些消失点击事件将交由activity...7.Viewenable属性不影响onTouchEvent默认返回值 8.事件传递过程是由外向内,即事件都是先传递给元素然后再分发给元素。...9.view中点击事件优先级,高-低:onTouchListener— onTouchEvent— onClickListener,当onTouchListeneronTouch方法返回false...2FLAG_DISALLOW_INTERCEPT此标志位是有requestDisallowInterceptTouchEvent方法设置,一般位于view中,一旦此标志位设置则不会执行VIewGroup

43810

Qt编写安防视频监控系统30-GPS运动轨迹

一、前言 此功能是一个客户定制,主要是需要在地图上动态显示GPS运动轨迹,有个应用场景就是一个带有监控车子,实时在运动中,后台可以接收到经纬度信息,需要绘制对应轨迹,相当于这些摄像机点位是动态移动...封装了百度地图,视图切换,运动轨迹,设备点位,鼠标按下获取经纬度等。 支持图片地图,设备按钮可以在图片地图上自由拖动自动保存位置信息。 在百度地图和图片地图上,双击视频可以预览摄像头实时视频。...双击摄像机节点自动播放视频,双击节点自动依次添加视频,自动跳到下一个,双击节点自动添加该节点下所有视频。 摄像机节点拖曳到对应窗体播放视频,同时支持拖曳本地文件直接播放。...isMark则还需要添加对应点 if (gpsPointInfo.isMark) { //标注点名称 为空则不显示 QString name = "";...//标注点地址 为空则不显示 QString addr = ""; //标注点弹框信息html格式标题 为空则采用默认格式 QString title

2.6K00
领券