RecyclerView без сенсорных событий поверх других представлений (наложение)

1

Я хочу создать макет с несколькими представлениями переработчика, которые синхронизируются с прокруткой (уже работают) и поверх всего LinearLayout, который содержит эти представления переработчика. Я хочу, чтобы другое представление переработчика (оверлей) также синхронизировалось с другими прокрутками (уже работало).

Теперь моя проблема: оверлей должен игнорировать все события Touch/Click, как будто его там нет. Представления внутри линейного слоя должны реагировать на них (работать без наложения).

Я попытался заставить его работать с 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

В свой пользовательский RecyclerView добавьте следующее переопределение:

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

Это не позволит настраиваемому RecyclerView получать дальнейшие сенсорные события и направлять их в базовые виды. См. Этот пост для объяснения того, как это работает и ссылки на другие ресурсы.

  • 0
    Я провел часы часов поиска решения и даже читать по почте вы связаны, но я не понимаю , что решение это так просто ... Большое спасибо !!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню