Android Swipeable Recycler视图侦听器被视图寻呼机覆盖';s

Android Swipeable Recycler视图侦听器被视图寻呼机覆盖';s,android,android-recyclerview,Android,Android Recyclerview,我正在使用图书馆(swipeableRecyclerView) 刷卡时,CardView会移动一段距离,然后碎片开始移动 i、 e.到了一个点RecyclerView监听器实现与库的回调工程,然后viewPager的滑动开始行动 有没有办法克服这种情况?我有两个片段,所以我想做一些类似的事情: 右击-调用RecyclerView侦听器,并取消CardView 左滑动-调用viewPager滚动并滑动片段 代码: 回答我自己的问题。正如Commonware所分享的,我创建了自定义视图寻呼机,但遇到

我正在使用图书馆(swipeableRecyclerView)

刷卡时,CardView会移动一段距离,然后碎片开始移动

i、 e.到了一个点RecyclerView监听器实现与库的回调工程,然后viewPager的滑动开始行动

有没有办法克服这种情况?我有两个片段,所以我想做一些类似的事情:

右击-调用RecyclerView侦听器,并取消CardView 左滑动-调用viewPager滚动并滑动片段

代码:


回答我自己的问题。正如Commonware所分享的,我创建了自定义视图寻呼机,但遇到了相反的问题(视图寻呼机不刷卡)

因此,我对自定义viewPager进行了更多调整:

public class MyViewPager extends ViewPager {
    public MyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected boolean canScroll(View v, boolean checkV, int dx, int x,
                                int y) {
        if (v instanceof MyRecyclerView) {
            if(dx>0)
                return(super.canScroll(v, checkV, dx, x, y));
            else
            return(true);
        }

        return(super.canScroll(v, checkV, dx, x, y));
    }
}
MyReceicycleView是在一个片段中使用的自定义回收视图。dx>0确保如果im从右边框到左,则调用一个viewPager侦听器,否则卡会从左到右刷走(删除)


结果:ViewPager按预期工作,同时用户刷卡/刷卡。感谢Commonware。

子类
ViewPager
和覆盖
canScroll()
。如果没有其他内容,当提供的
视图是您的
RecyclerView
时,您可以返回
true
,这样
RecyclerView
上的水平手势就不会被
ViewPager
窃取。这在
ViewPager
页面内有地图的情况下证明了这一点。它起了作用,但问题反过来了。我在frags和Custom viewPager中都有recyclerview,这两个视图的pager都返回true,即pager没有滚动,但卡被刷出。我可以把它留在这里(用户点击标签切换),但这不是一个好的设计。有什么建议吗?
public class MyViewPager extends ViewPager {
    public MyViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected boolean canScroll(View v, boolean checkV, int dx, int x,
                                int y) {
        if (v instanceof MyRecyclerView) {
            if(dx>0)
                return(super.canScroll(v, checkV, dx, x, y));
            else
            return(true);
        }

        return(super.canScroll(v, checkV, dx, x, y));
    }
}