2015-09-17 12 views
5

SwipeRefreshLayout è così sensibile che quando si scorre lo schermo orizzontalmente, con solo un piccolo movimento verticale, verrà visualizzato l'indicatore "pull to refresh". Come posso evitare questo? SwipeRefreshLayout ha una funzionePossiamo impostare la distanza dall'indicatore di trigger per SwipeRefreshLayout?

public void setDistanceToTriggerSync (int distance) 

può esso ha qualcosa come

public void setDistanceToTriggerIndicator (int distance) 

per visualizzare l'indicatore solo dopo un certo periodo di distanza verticale viene spostata verso il basso, o voi ragazzi avete un po 'di lavoro in giro?

Grazie!

+2

Eventuali duplicati di [HorizontalScrollView all'interno SwipeRefreshLayout] (http://stackoverflow.com/questions/23989910/horizontalscrollview-inside-swiperefreshlayout) – Sufian

risposta

2

Ehi @Viky Ho riscontrato lo stesso problema con Visualizza il cercapersone all'interno del layout di aggiornamento dello scorrimento e ho trovato che questa soluzione è perfetta spero che aiuti.

seguito il codice è tratto dal this SO answer:

public class MySwipeRefreshLayout extends SwipeRefreshLayout { 

    private int mTouchSlop; 
    private float mPrevX; 
    // Indicate if we've already declined the move event 
    private boolean mDeclined; 

    public MySwipeRefreshLayout(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       mPrevX = MotionEvent.obtain(event).getX(); 
       mDeclined = false; // New action 
       break; 

      case MotionEvent.ACTION_MOVE: 
       final float eventX = event.getX(); 
       float xDiff = Math.abs(eventX - mPrevX); 

       if (mDeclined || xDiff > mTouchSlop) { 
        mDeclined = true; // Memorize 
        return false; 
       } 
     } 

     return super.onInterceptTouchEvent(event); 
    } 

} 
+0

Grazie molto! Funziona! –

+2

Contrassegna le domande come duplicate se trovi la domanda come uguale. – Sufian

+0

@Sufian Questa domanda ha un titolo molto più significativo (che è come/perché l'ho trovato) rispetto alla precedente domanda SO. Mi stavo solo chiedendo se contrassegnare questa domanda come un duplicato abbia qualche incidenza su quanto sia rintracciabile? –

Problemi correlati