Я хочу создать макет с несколькими представлениями переработчика, которые синхронизируются с прокруткой (уже работают) и поверх всего 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>
В свой пользовательский RecyclerView добавьте следующее переопределение:
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
return false;
}
Это не позволит настраиваемому RecyclerView получать дальнейшие сенсорные события и направлять их в базовые виды. См. Этот пост для объяснения того, как это работает и ссылки на другие ресурсы.