2016-07-29 15 views
2

Ich habe zwei horizontale scrollview, und möchte sie immer auf der gleichen Position/Abstand halten. Wenn der Benutzer einen scrollt, muss er den anderen scrollen. Die Herausforderung besteht darin, dass eine Endlosschleife auftritt. Einer wird den anderen heben, der andere wird zuerst aufsteigen. Wie kann ich einen Status festlegen, der angibt, dass ein benutzerinitiierter Scroll noch läuft? Andere scrollview sollte also den programmatischen scroll nicht ausführen.Wie synchronisiere ich zwei ScrollView in Android?

Eine davon ist eine HorizontalScrollView andere ist eine RecyclerView.

Versuchte Lösungen unten wie, ohne Erfolg:

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

     @Override 
     public void onScrollChanged() { 

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

Versuchte Zustand in onScrollStateChanged Verfahren zu ändern:

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

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

Antwort

0

Try this ...

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

    @Override 
    public void onScrollChanged() { 

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

    } 
});