同步两个水平滚动视图的Android实现

6
我有两个水平滚动视图,每个下面都有一个线性布局项。如何实现滚动同步,当其中一个滚动时,另一个也自动滚动。有什么帮助吗?
2个回答

3
你可以在第一个水平滚动视图的onTouch事件中记录Down事件时的X位置。然后当你有一个Move事件时,记录X位置的变化量。然后你可以调用第二个水平滚动视图的scrollBy(deltaX, 0)方法。在Up或Cancel事件上,确保重置状态变量。
我已经使用ListView滚动垂直滚动条,只是使用Y位置而不是X。这是我完成此操作的代码。concurrentScroller是我的垂直视图。
if(concurrentScroller != null) {
            int deltaY = (int) (startTouchConcurrentY - ev.getY());
            startTouchConcurrentY = ev.getY();
            concurrentScroller.scrollBy(0, deltaY);                             
        } 

这个解决方案在翻转时不起作用,第一个视图继续移动,而第二个视图只是进行了一个deltaY的移动。 :( - thanhbinh84
你对这个有什么想法吗?https://stackoverflow.com/questions/58848391/how-do-i-synchronize-scrollview-positions-of-dynamic-horizontal-scroll-views-ins - user11455292

1
我会为每个视图实现onScrollListener,以便在其中一个视图上调用scrollTo函数来滚动另一个视图。

哪些视图?HorizontalScrollView没有onScrollListener方法。 - calinb
scrollView.getViewTreeObserver().addOnScrollChangedListener(new OnScrollChangedListener(){...}); - Alexandru Cristescu
嗨,Alexandru,你对这个有什么想法吗?https://stackoverflow.com/questions/58848391/how-do-i-synchronize-scrollview-positions-of-dynamic-horizontal-scroll-views-ins - user11455292

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接