6

Devo sincronizzare insieme i due ViewPager. Il requisito è simile allo scrolling di ViewPager-1 e anche il ViewPager-2 dovrebbe scorrere di una certa quantità. L'immagine mostrata di seguito ti renderà più chiaro con la mia domanda.Controllo insieme di due ViewPager

enter image description here

Puoi anche aiutarmi con qualche link tutorial. Grazie.

risposta

2

È possibile estendere ViewPager al fine di creare una visualizzazione personalizzata e sovrascrivere onTouchEvent() nel seguente modo:

 @Override 
     public boolean onTouchEvent(MotionEvent event) { 

      if(mDependentView != null){ 
      mDependentView.onTouchEvent(event); 
      } 
      return super.onTouchEvent(event); 
     } 

Crea anche un setter all'interno della vostra classe personalizzata, al fine di impostare la dependentView

public void setDependentView(View view){ 
    mDependentView = view; 
} 

Quindi è necessario impostare il secondo viewpager come visualizzazione dipendente del primo viewpager dell'attività.

13

Penso che questo è quello che vi serve:

 viewpager1.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       viewpager2.onTouchEvent(event); 
       return false; 
      } 
     }); 

     viewpager2.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       viewpager1.onTouchEvent(event); 
       return false; 
      } 
     }); 

Ho un medesimo problema, ma prima cerco di utilizzare il metodo fakeDragBy, che è senza uscita. (se avete più di due pagine)

+0

soluzione molto bella ed efficace. Grazie! –

+1

Utilizzando questa tecnica, si verifica un arresto anomalo se si toccano contemporaneamente entrambi i cercapersone. Ho finito per utilizzare l'approccio qui invece: https://stackoverflow.com/a/26513243/369480 – gnuf