2016-07-29 74 views
2

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

其中之一是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; 
       }*/ 
      } 

回答

0

尝试......

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

    @Override 
    public void onScrollChanged() { 

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

    } 
});