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

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

需求

在实际项目开发中,有这样的需求,长按整个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,更好的方案有待思考和研究,欢迎提供宝贵意见!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值