viewPagerとrecycleViewのスライド競合の解決
917 ワード
viewPagerに横方向のrecycleViewが含まれている場合、横方向にスライドするとviewPagerがページをめくることになります.解決策は
ここでもう1つの問題は、横方向recycleViewが縦方向scrollViewにネストされている場合、recycleView領域を上下にスライドすると、インタフェース全体の縦方向スライドがトリガーされないことです.上のコードにスライド方向の判断を加える必要があり、横スライド時にparentを呼び出すだけである.requestDisallowInterceptTouchEvent(true)
/**
* 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)
}
}
ここでもう1つの問題は、横方向recycleViewが縦方向scrollViewにネストされている場合、recycleView領域を上下にスライドすると、インタフェース全体の縦方向スライドがトリガーされないことです.上のコードにスライド方向の判断を加える必要があり、横スライド時にparentを呼び出すだけである.requestDisallowInterceptTouchEvent(true)