如何在Android中同步两个scrollview?

时间:2016-07-29 18:48:31

标签: android horizontal-scrolling

我有两个水平滚动视图,并希望它们始终保持在相同的位置/距离。如果用户滚动一个,则需要以编程方式滚动另一个。挑战在于,将发生无限循环。一个会提高另一个,另一个会先提高。如何设置状态,指示用户启动滚动仍在进行中?所以其他scrollview不应该执行程序化滚动。

其中一个是HorizontalScrollView,另一个是RecyclerView

尝试过如下解决方案,没有任何成功:

    horizontalScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {

        @Override
        public void onScrollChanged() {

            if (programmaticScrollEnable) {
                programmaticScrollEnable = false;
                // do programmatic scrolling here
                programmaticScrollEnable = true;
            }
        }
    });

尝试在onScrollStateChanged方法中更改状态:

            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);

                /*if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                    MainActivity.programmaticScrollEnable = true;
                }*/
            }

1 个答案:

答案 0 :(得分:0)

试试这个......

horizontalScrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() {

    @Override
    public void onScrollChanged() {

   recyclerView.scrollTo(horizontalScrollView.scrollTo(horizontalScrollView.getScrollX(), 0);

    }
});