RecyclerView,在其他视图之上没有触摸事件(覆盖)

时间:2019-04-15 19:20:24

标签: java android

我想创建一个布局,其中包含多个滚动同步的recyclerview(已经可以工作),并且在包含这些recyclerview的整个LinearLayout的顶部,我想拥有另一个recyclerview(覆盖图),并且也可以与其他的recyclerview滚动同步(已经工作)。

现在我的问题是: 该覆盖图应忽略所有的触摸/点击事件,因为它不存在。 linearlayour内部的视图应对此做出反应(无需覆盖即可工作)。

我试图使其与onIntercerptTouchEvent一起使用,并将TouchEvents调度到其他视图,但是我不知道如何使其工作。

我的布局: vertical_layout包含多个Recyclerviews如上所述

    <ScrollView
        android:id="@+id/scroll_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="false">

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:baselineAligned="false">

            <LinearLayout
                android:id="@+id/vertical_layout"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:orientation="vertical"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toEndOf="@id/channels_layout">
            </LinearLayout>

            <CustomOverlayRecyclerView
                android:id="@+id/overlay_recycler_view"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:orientation="horizontal"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintEnd_toEndOf="parent"/>

            <LinearLayout
                android:id="@+id/channels_layout"
                android:layout_width="90dp"
                android:layout_height="match_parent"
                android:orientation="vertical"
                app:layout_constraintStart_toStartOf="parent">

            </LinearLayout>

        </androidx.constraintlayout.widget.ConstraintLayout>
    </ScrollView>

1 个答案:

答案 0 :(得分:1)

向您的自定义 RecyclerView 添加以下替代:

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    return false;
}

这将防止自定义 RecyclerView 接收进一步的触摸事件并将其定向到基础视图。请参见Stack Overflow post,以获取有关其工作方式以及与其他资源的链接的说明。