目标: 我正在编写一个视图,其行为类似于ViewPager i-e中的RecyclerView;手指水平移动时视图移动,手指垂直移动时,RecyclerView会滚动。请注意,当手指水平移动时,我的自定义视图还有另一个目标,因此我无法在此处使用viewpager。
问题: 叠加视图可以正确处理水平手指运动,但传递给RecyclerView时的垂直事件不会导致滚动。
问题: 如何将垂直手指移动传递给RecyclerView并导致滚动?
守则:
mOverlayView.setOnTouchListener(new View.OnTouchListener() {
switch (action) {
case MotionEvent.ACTION_UP:
//some code
return true;
case MotionEvent.ACTION_DOWN:
mBackupTouchDownEvent = event;
// some code
return true;
case MotionEvent.ACTION_MOVE:
// some logic {
movingHorizontally = true;
}
return true;
} else
movingHorizontally = false;
break;
}
// executor came down here? This means finger moved vertically
mRecyclerView.requestFocus();
mRecyclerView.dispatchTouchEvent(mBackupTouchDownEvent); // don't cause scrolling
mRecyclerView.dispatchTouchEvent(event); // don't cause scrolling? Alternative solutoin?
return false;
}
XML:
<RelativeLayout
android:background="@color/colorPrimary"
android:layout_width="400dp"
android:layout_height="500dp"
android:layout_centerVertical="true"
>
<android.support.v7.widget.RecyclerView
android:layout_width="380dp"
android:layout_height="match_parent"
android:id="@+id/scrollView">
</android.support.v7.widget.RecyclerView>
<RelativeLayout
android:layout_width="300dp"
android:layout_height="match_parent"
android:background="#77555555"
android:id="@+id/overlayScreen"/>
</RelativeLayout>