我在一个看起来像这样的复杂层次结构中有一个水平 RecyclerView -

<ViewPager id="+@id/first"> 
    <ViewPager id="+@id/second"> this viewpager is taking away the scroll event 
        <SwipeToRefreshLayout> 
            <RecyclerView> //this one is vertical 
                <RecyclerView id="@id/rv1"> //this one is horizontal 
                <RecyclerView id="@id/rv2"> //this one is working fine (different type) 
            </RecyclerView> 
        </SwipeToRefreshLayout> 
    </ViewPager> 
</ViewPager> 

现在的问题是第二个 ViewPager 正在劫持 Horizo​​ntal RV 的滚动。该垂直房车中有 2 种水平房车(RV1 和 RV2)。但只有其中一个(RV1)面临这个问题。第二个(RV2)工作正常。
此外,当我按住时,滚动工作正常。当 RV1 已经在滚动并且没有稳定下来时,滚动也可以正常工作。
我已经提到其他关于将nestedScrolling 设置为false 的答案。似乎没有任何工作。

请您参考如下方法:

您可以通过覆盖 onInterceptTouchEvent 方法来实现这一点:

 mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() { 
            @Override 
            public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent event) { 
                int action = event.getAction(); 
                
                switch (action) { 
                    case MotionEvent.ACTION_DOWN: 
                        rv.getParent().requestDisallowInterceptTouchEvent(true); 
 
                        break; 
                 
                } 
                return false; 
            } 
 
            @Override 
            public void onTouchEvent(@NonNull RecyclerView view, @NonNull MotionEvent event) { 
 
            } 
 
            @Override 
            public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { 
 
            } 
        }); 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!