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,更好的方案有待思考和研究,欢迎提供宝贵意见!!!

人已赞赏
Android文章

android 5.0-9.0特性总结

2020-1-5 9:16:03

Android文章

安卓第三方登录之微信登录(图文详解)

2020-1-5 11:14:15

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索