将滚动事件传递到另一个视图

时间:2015-12-07 16:40:03

标签: android scroll android-recyclerview touch-event

目标: 我正在编写一个视图,其行为类似于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>

0 个答案:

没有答案
相关问题