2016-07-29 9 views
2

私は2つの水平スクロールビューを持ち、それらを常に同じ位置/距離に保ちたいと思います。ユーザーがスクロールすると、プログラムでスクロールする必要があります。問題は、無限ループが発生することです。 1つは他を上げ、他のものは最初に上げるでしょう。どのようにして状態を設定し、ユーザーが開始したスクロールがまだ進行中であることを示すことができますか?したがって、他のスクロールビューはプログラムによるスクロールを実行しません。Androidで2つのスクロールビューを同期するにはどうすればよいですか?

これらのうちの1つは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); 

    } 
}); 
...これを試してみてください
関連する問題