2016-07-29 5 views
2

У меня есть два горизонтальных прокрутки, и вы хотите держать их всегда в одном и том же положении/расстоянии. Если пользователь прокручивает один, необходимо прокручивать программно другое. Задача состоит в том, что произойдет бесконечный цикл. Один поднимет другой, другой поднимет первым. Как я могу установить состояние, указать, что прокрутка, инициированная пользователем, все еще продолжается? Поэтому другое scrollview не должно выполнять программный свиток.Как синхронизировать два scrollview в 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

Try это ...

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

    @Override 
    public void onScrollChanged() { 

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

    } 
}); 
Смежные вопросы