美文网首页
Android中父View穿透子View响应长按事件

Android中父View穿透子View响应长按事件

作者: CarlosLynn | 来源:发表于2018-10-10 18:43 被阅读202次

    需求

    在实际项目开发中,有这样的需求,长按整个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中父View穿透子View响应长按事件

          本文链接:https://www.haomeiwen.com/subject/qlkmaftx.html