解决viewPager和recycleView的滑动冲突

viewPager里包含横向的recycleView时,横向滑动recycleView会导致viewPager翻页,解决办法是

/**
 * zivon
 * 解决viewPager和recycleView的滑动冲突
 */
class NestedRecyclerView(context: Context, attrs: AttributeSet?) : RecyclerView(context, attrs) {

    private val globalRect: Rect = Rect() // 临时数据

    override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
        var x = ev?.rawX?.toInt()
        var y = ev?.rawY?.toInt()
        getGlobalVisibleRect(globalRect)
        if (ev?.action == MotionEvent.ACTION_MOVE) {
            if (globalRect.contains(x!!, y!!)) {
                parent.requestDisallowInterceptTouchEvent(true)
            }
        }
        return super.dispatchTouchEvent(ev)
    }
}

这里还有一个问题就是,如果横向recycleView是被嵌套在纵向scrollView里的话,在recycleView区域上下滑动的时候,不会触发整个界面的纵向滑动。需要在上面代码中加滑动方向的判断,只需要在横向滑动的时候调用parent.requestDisallowInterceptTouchEvent(true)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章