# AndroidView点击穿透现象详解
在Android开发中,开发者常常会遇到“点击穿透”的问题。这种现象发生时,用户的点击事件通过一个透明的View(如`AndroidView`)传递到其下方的View。这可能会导致一些意想不到的行为,影响用户体验。本文将详细介绍AndroidView点击穿透的原因,并结合代码示例帮助你理解其实现和解决方案。
## 点击穿透的原因
当你在Androi            
                
         
            
            
            
            滑动事件穿透:在一个可滚动的列表页中打开弹窗,底部的页面理论上是不可滚动的,但是当滑动弹窗时,底部页面会跟随滚动,这就是所谓的页面滚动穿透的问题。解决方案一:当弹窗显示时,在父元素上添加fix类来禁用滚动;当弹窗隐藏时,移除fix类。.fix{
            height: 100%;
            overflow: hidden;
        }缺点:当弹出蒙层时,禁用            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-02 06:49:26
                            
                                96阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1、UI框架基本概念:Activity:基本的页面单元,Activity包含一个Window,window上可以绘制各种view;View:最基本的UI组件,表示屏幕上的一个矩形区域;Window:表示顶层窗口,管理界面的显示和事件的响应;每个Activity均会创建一个PhoneWindow对象,是Activity和整个View系统交互的接口。PhoneWindow:该类继承于Window类,同            
                
         
            
            
            
            项目中采用Activity配合Fragment来完善整体布局框架,但是当多个Fragment添加进Fragment栈时,由于处于栈底的Fragment绑定了点击跟滑动监听事件,当新的Fragment添加进栈的时候,虽然上层的Fragment并没有实现任何监听事件,当时当用户触摸或者在屏幕上滑动的时候依然会触发位于栈底的Fragment上绑定的监听事件,其实这个问题看起来很奇葩,但是解决起来并不难,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-23 21:58:47
                            
                                34阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 如何实现Android点击穿透
## 流程图
```mermaid
stateDiagram
    [*] --> 点击事件传递
    点击事件传递 --> [*]
```
## 关系图
```mermaid
erDiagram
    点击事件传递 ||--|| [*]
```
## 步骤表格
| 步骤 | 操作 |
| --- | --- |
| 1 | 设置点击事件传递            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2024-03-09 05:51:37
                            
                                85阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            通过Canvas来调节层级原理每个Panel都带Canvas,然后Canvas的Render Mode 选择 Screen Space - Camera,最后通过Order in Layer 这个参数来进行层级排序。这无疑是一个方便的方案,但同时也会导致一些问题问题1.美术难以对层级做区分处理特效中的Order in Layer如果设定的层级高过其他Panel的层级,那么依然会导致穿透问题,这需要            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-16 02:47:56
                            
                                213阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            在某个项目中,很多元素需要定位在一个地图层上面,这里就要用到很多绝对定位或者相对定位的元素,但是这样的话,这些浮在上面的div或者其它元素一般都会给个宽高,或者relative的元素可以不给宽高,这个时候,这些元素就会盖住下面的地图层,以至于地图层无法操作。。。然后正好在Google map见到了类似的问题,拿来当例子来说:Google map中左上角的操作区域占位是挺大的,如红色框区域,然后在这            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-11 11:21:22
                            
                                223阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            什么是事件穿透?点击上面的一层时会触发下面一层的事件”google”说原因是“tap事件实际上是在冒泡到body上时才触发”,也就是Zepto的tap事件是绑定在document上的,所以会导致现象原因:zepto的tap通过兼听绑定在document上的touch事件来完成tap事件的模拟的,及tap事件是冒泡到document上触发的,再点击完成时的tap事件(touchstart\touch            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-02 20:13:18
                            
                                67阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在移动端页面上,当有 fixed 遮罩背景和弹出层时,在屏幕上滑动能够滑动背景下面的内容,这就是臭名昭著的滚动穿透问题解决方法一:css之overflow:hiddenhtml, body {  
    overflow: auto;  
    height: 100%;  
}使用这种方法时,在与饿了么前端 mint-ui 组件库中的 Infinite scroll 存在冲突,导致在无限滚动            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-28 15:44:53
                            
                                183阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、背景博主所负责其中一个项目是web页面,在移动端上出现了事件穿透问题,开发介绍问题原因后,发觉是移动web一个知识点,值得记录一下。二、click与300ms延迟移动浏览器提供一个特殊的功能:双击(double tap)放大300ms的延迟就来自这里,用户触碰页面之后,需要等待一段时间来判断是不是双击(double tap)动作,而不是立即响应click(单击),等待的这段时间大约是300ms            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-10 12:22:28
                            
                                295阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            描述在近期的一个移动端项目中,有一个页面需要有弹框提示,并且这个弹框通过关闭按钮关闭。页面当中使用了 iScroll 来实现页面局部滚动,在 iScroll 的配置当中把 tap 和 click 事件都开启了。代码如下:this.myScroll = new IScroll(this.$refs.wrapper, {
  mouseWheel: true,
            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-25 07:00:43
                            
                                195阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            经常在项目中被点击事件各种坑,今天就来总结下吧直接说结论:点击事件的响应顺序Activity —> ViewGroup —> View当点击事件来到ViewGroup时会根据点击的xy坐标遍历布局中的子view判断是否在其区域内,遍历顺序为最顶层到最底层。如果这时候覆盖在view上的view没有消费这个点击事件,那么事件就会继续传递下去,就导致了点击事件的透传,而  TextView            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-09 20:12:46
                            
                                843阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.单击穿透原理         1 其一是单击穿透情况:单击蒙层(mask)上面的 “ 关闭 ” 按钮,如果蒙层消失,一定是触发了 按钮下面元素的click事件,让蒙层消失。          2.其二是页面单击穿透情            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-16 01:27:34
                            
                                83阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            在近期的一个移动端项目中,有一个页面需要有弹框提示,并且这个弹框通过关闭按钮关闭。页面当中使用了 iScroll 来实现页面局部滚动,在 iScroll 的配置当中把 tap 和 click 事件都开启了。 代码如下:this.myScroll = new IScroll(this.$refs.wrapper, {
 mouseWheel: true,
 click: true,
 tap: tr            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-28 13:56:33
                            
                                213阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一.click与300ms延迟  hammer.js绑定tap事件过后会在触发之后再次触发一个点击事件在我们给遮罩绑定tap事件的时候如果遮罩下面恰好是一个a标签那么就会出现点击遮罩页面跳转的情况二.点击穿透问题点击穿透现象有三种    *点击穿透问题:点击蒙层(mask)上的关闭按钮,蒙层消失后发现触发了按钮下面元素的click事件 蒙层关闭按钮绑定的是touch事            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-04 11:00:32
                            
                                131阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、事件触发顺序PC网页上的大部分操作都是用鼠标的,即响应的是鼠标事件,包括mousedown、mouseup、mousemove和click事件。一次点击行为,可被拆解成:mousedown -> mouseup -> click 三步。  手机上没有鼠标,所以就用触摸事件去实现类似的功能。touch事件包含touchstart、touchmove、touchend,注意手机上并没有            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-18 13:54:23
                            
                                357阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            安卓的webview和自带浏览器下有个奇怪的现象。现象:1、如果输入框input或者textarea的正上方(z轴方向,即上层)有个div,当点击这个div使得div隐藏了之后,input会得到焦点,导致软键盘弹出。2、浏览视图点击某个地方切换到编辑视图,如果浏览视图点击的位置 在 编辑视图相应位置有个输入框,那么切换过去之后,编辑页的输入框会自动得到焦点。这个体验很不舒服。讨论:这个不是点击事件            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-18 06:01:40
                            
                                179阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            【问题描述】 在近期开发的过程中遇到这样一个场景:透明的子窗口覆盖于父窗口之上,但需要父窗口中的部件对鼠标点击事件进行正常的响应。正常情况下,由于子窗口覆盖于父窗口之上,鼠标点击事件会被子窗口中的部件获取,而不会被父窗口中的部件获取到,要解决这个问题,就需要让鼠标点击事件穿透子窗口,下发到父窗口的对应部件中。【解决思路】 要实现事件的穿透,最关键的就是setAttribute(Qt::WA_Tra            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-11 09:28:13
                            
                                213阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            目录移动端click点击事件穿透的问题造成该现象的原因:解决方案如下:如何使用插件FastClickvue项目中使用原生项目中使用移动端click点击事件穿透的问题造成该现象的原因:在移动端H5开发过程中,关于点触可能会遇到如下两个问题:
- 手动点击与真正触发`click`事件会存在 300ms 的延迟
- 点击穿透问题(点击行为会穿透元素触发非父子关系元素的事件)
延迟的存在时因为浏览器想            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-02 23:10:12
                            
                                345阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            # 实现 iOS 点击不穿透的完整教程
对于刚入行的小白来说,理解和实现“iOS 点击不穿透”是一个比较重要的技能。尤其是在开发复杂的界面时,如何处理层叠的视图与响应事件,就成为了一个关键课题。在这篇文章里,我们将通过一系列步骤来实现这个功能。
## 流程概述
以下是实现 iOS 点击不穿透的步骤:
| 步骤编号 | 操作说明                   |
|----------