2016-11-20 90 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

我的回收商有这个代码的错误,它自动始终滚动 –

相关问题