2016-11-20 106 views
0

我有以下代碼可檢測onTouch中的滑動是左/右。但我想檢測頂部/下部。通過修改代碼請建議在代碼中,我怎麼能做到這一點的變化滾動到回收站視圖中下一項的頂部

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

你爲什麼不得到event.getY()和工作原理相同邏輯的代碼? –

+0

請問您可以發佈解決方案嗎?謝謝 ! –

回答

0

這裏是我想通了

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

我的回收商有這個代碼的錯誤,它自動始終滾動 –

相關問題