【Android学习】关于Android中解决重写onTouch事件提示 的警告:onTouch should call View#performClick when a click is detec

一、问题的出现

当我对控件使用setOnTouchLister()时重写了onTouch()方法时就出现了这个警告

在这里插入图片描述

二、原因

  • onTouchListener的onTouch方法优先级比onTouchEvent高,会先触发
  • 假如onTouch方法返回false会接着触发onTouchEvent,反之onTouchEvent方法不会被调用
  • 内置诸如click事件的实现等等都基于onTouchEvent,假如onTouch返回true,这些事件将不会被触发
  • 顺序为: onTouch—–>onTouchEvent—>onClick

三、解决办法

为了解决这个警告,我们应该在重写onTouch的时候,在合适的位置处调用一下View#performClick方法,如下示例:在这里插入图片描述
iew既设置了setOnTouchListener()方法,又设置了setOnClickListener()方法的时候,记得在OnTouchListener的onTouch()方法里调用一下performClick()方法。
因为如果你重写了onTouch,并且返回值返回true的话,就有可能把performClick()方法给屏蔽了,这样这些点击操作就没办法完成了。

感谢 https://blog.csdn.net/ouyang_peng/article/details/82563779 这篇文章,这篇文章里对这个问题进行了更加详细的解答,本人只是摘要记录用,免得忘记,看到警告就想知道为什么,所以就去网上找了,这篇文章给了我解答,非常感谢。

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值