2016-11-20 12 views
0

私はonTouchのスワイプが左か右であるかどうかを検出する次のコードを持っています。しかし、私はトップ/ダウンを検出したい。コードを変更することにより、として私はそれを達成することができますどのようにコードの変更を提案してください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; 
     } 
    }); 

任意のサードパーティのライブラリや他のソリューションを提案していけないしてください。上記のコードでのみ変更を提案してください。私は他の多くのことを試みましたが、これは完璧なものです

ありがとうございました!ここ

+1

を考え出したコードがありますか? –

+0

解決策を投稿してください。ありがとう! –

答えて

0

私はあなたがevent.getYを取得する()と同じロジックを動作しない理由を

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

私のリサイクラーはこのコードにバグがあり、そのコードは常に自動的にスクロールします –

関連する問題