Android-两层view叠加带来的响应问题

本文探讨了Android中双层View叠加时,底层View响应点击事件并触发系统click声音的问题。通过分析触摸事件的分发、拦截和响应机制,提出了解决方案:在上层View未处理触摸事件时,主动返回true,阻止事件继续分发到下层View,从而消除点击声音。此外,通过创建TouchEventConsumerLayout父类,解决了多个类似场景的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前几天在公司遇到一个双层view叠加,而此时系统存在click声音导致点击上层view空白处有声音的问题。

双层view叠加不同于单个view的触摸事件分发机制,单个view的触摸事件


我们先看对于一个viewGroup来说,触摸事件的分发

ViewGroup分发.png
一般来说,开发Android应用程序的UI界面都不会直接实用View和ViewGroup,而是使用这两大基类的派生类。

Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、onInterceptTouchEvent(MotionEvent ev)、onTouchEvent(MotionEvent ev);

###### 1.事件分发:(看过我上篇Fragment中监听触摸事件的兄弟就该知道该方法的妙用)

public boolean dispatchTouchEvent(MotionEvent ev)

该方法会以隧道方式(从根元素依次往下传递直到最内层子元素或在中间某一元素中由于某一条件停止传递)将事件传递给最外层 View 的 dispatchTouchEvent(MotionEvent

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值