2016-11-20 7 views
0

Ich habe den folgenden Code, der erkennt, ob ein Wischen in onTouch ist Links/Rechts. Aber ich möchte oben/unten erkennen. Bitte legen nahe, Änderungen im Code, wie ich, dass durch Änderung des Codes erreichen kannScrollen zum Anfang des nächsten Artikels in einer Recyclerview

r.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      int downX = 0,upX; 
      switch(event.getAction()){ 
       case MotionEvent.ACTION_DOWN:{ 
        downX = (int) event.getX();} 
       case MotionEvent.ACTION_UP:{ 
        upX = (int) event.getX(); 

        float deltaX = downX - upX; 
        Log.e("DeltaX","Dd "+deltaX); 
        if(Math.abs(deltaX)>0){ 
         if(deltaX>=0){ 

          return true; 
         }else{ 

          return true; 
         } 
        } 
        else { 

        } 
       } 
      } 

      return false; 
     } 
    }); 

Bitte nicht vorschlagen, alle 3. Party-Bibliotheken oder eine andere Lösung. Bitte geben Sie nur die Änderungen im obigen Code an. Ich habe viele andere Dinge ausprobiert, aber das ist eine perfekte Passform

Vielen Dank für Ihre Antwort!

+1

warum Sie event.getY() und funktionieren auf die gleiche Logik nicht bekommen? –

+0

Könnten Sie bitte eine Lösung posten? Vielen Dank ! –

Antwort

0

hier ist der Code i

heraus
r.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     public boolean top; 

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


      if (top) { 
       int index = mLay.findFirstVisibleItemPosition(); 
       r.smoothScrollToPosition(index); 

      } else { 
       int index = mLay.findLastVisibleItemPosition(); 
       r.smoothScrollToPosition(index); 


      } 


     } 

     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 

      if (dy > 0) { 
       top = false; 
      } else { 

       top = true; 
      } 

     } 
    }); 
+0

mein Recycler hat einen Bug mit diesem Code, der automatisch immer scrollt –

Verwandte Themen