Прежде всего, используйте NestedScrollView
из библиотеки поддержки, поскольку она позволяет слушать прокручивать события легко. Затем установите onScrollChange
слушателей для обоих NestedScrollView
у вас есть. При получении прокрутки изменения для scrollView1
, например, вызов scrollTo(...)
для scrollView2
:
scrollView1.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
scrollView2.setOnScrollChangeListener(null);
scrollView2.scrollTo(scrollX, scrollY);
scrollView2.setOnScrollChangeListener(...); //SET SCROLL LISTENER AGAIN
}
});
Перед вызовом scrollTo(..)
для scrollView2
, удаления своего слушателя, а затем добавить его снова. В противном случае scrollTo(..)
, который вы вызываете, может вызвать бесконечные вызовы в обоих прослушивателях NestedScrollView
.
И, конечно же, вам необходимо написать аналогичный код выше для вашего scrollView2
.
Имеются ли в RecyclerViews одни и те же данные? –
Почему вы вообще хотите использовать ScrollView? RecyclerView имеет свою собственную логику прокрутки! :) –
нет, они содержат разные данные. @progressive_overload –