Android scrollview嵌套listview出现listview无法滑动冲突解决方法

转载来源:https://blog.csdn.net/sinat_28765197/article/details/81317011

这个问题是有点老了,这个问题显而易见,就是scrollview拦截了触摸事件,今天又认真看了一遍事件分发机制部分源代码,只需要重写ScrollView的dispatchTouchEvent在调用super.dispatchTouchEvent(ev)之前设置requestDisallowInterceptTouchEvent不允许拦截即可。

public class MyScrollview extends ScrollView{

    public MyScrollview(Context context) {
        super(context);
    }

    public MyScrollview(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyScrollview(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        requestDisallowInterceptTouchEvent(true);
        return super.dispatchTouchEvent(ev);
    }
}
解决方法的一句就是viewgroup在调用dispatchTouchEvent之后会先去调用onInterceptTouchEvent判断是否需要拦截。而在调用onInterceptTouchEvent之前会有一个disallowIntercept的判断,源码部分如下:

查询之后发现disallowIntercept会在requestDisallowInterceptTouchEvent中进行赋值


 
至于其他的解决方法,网上应该可以找到很多,写这篇博客只是为了加深自己的记忆,也希望能帮到你。
--------------------- 
作者:被门夹的核桃还补脑吗 
来源:CSDN 
原文:https://blog.csdn.net/sinat_28765197/article/details/81317011 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(android)