2016-02-12 73 views
3

我有tablayout viewpager,里面ViewPager I'hv它正在创造一个RecyclerView片段,Recyclerview与刷卡左/右

在RecyclerVIew鱼子项目我已经创建的水平滚动型,用于获取向左扫/正确的运动,

基本上我想向左滑动该行只有75%的屏幕,然后显示滑动式视图,

我也用的RecyclerViewItemTouchHelper但刷卡完整的行(100%刷卡行),

我知道有创建刷卡左,右的手势在谷歌可用库,

但所有这些工作不正常,因为当我们在刷卡项目recyclerview,有时倒是去ViewPager因此页面获得刷卡我不想即,

所以,我用Horizo​​ntalScrollView,但问题是,我无法检测Horizo​​ntalScrollView的触摸听者内刷卡方向,

其实我们想一定量后自动滚动,如果滚动上HorizontalScrollView

下面是我尝试过的代码。

holder.scrollContainer.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       int scroll1st = 0; 
       int scroll2nd = 0; 

       if(event.getAction() == MotionEvent.ACTION_DOWN){ 
        scroll1st = holder.scrollContainer.getScrollX(); 
        Log.d("SCROLL", "Scroll down callded: amt is: " + holder.scrollContainer.getScrollX()); 
        mDataSet.get(position).isFirstSwipe = false; 
       } else if (event.getAction() == MotionEvent.ACTION_UP){ 
        scroll2nd = holder.scrollContainer.getScrollX(); 
        Log.d("SCROLL", "Scroll up callded: amt is: " + holder.scrollContainer.getScrollX()); 
       } 

       Log.d("SCROLL", "max scroll amount: " + holder.scrollContainer.getMaxScrollAmount()); 

       if(event.getAction() == MotionEvent.ACTION_UP){ 

        if(scroll2nd > scroll1st && (scroll2nd - scroll1st) > 50){ 
         holder.scrollContainer.postDelayed(new Runnable() { 
          public void run() { 
           holder.scrollContainer.fullScroll(HorizontalScrollView.FOCUS_RIGHT); 
          } 
         }, 100L); 
         mDataSet.get(position).isFirstSwipe = true; 
        } else if (scroll1st > scroll2nd && (scroll1st - scroll2nd) > 50){ 
         holder.scrollContainer.postDelayed(new Runnable() { 
          public void run() { 
           holder.scrollContainer.fullScroll(HorizontalScrollView.FOCUS_LEFT); 
          } 
         }, 100L); 
         mDataSet.get(position).isFirstSwipe = true; 
        } 
    } 
       v.onTouchEvent(event); 
       return true; 
      } 
     }); 

基本上ACTION.DOWN事件不被调用每次所以不能得出不刷卡方向

回答

0

确保RecyclerView是通过事件来滚动容器。

add onTouchListener to RecyclerView并将活动传递给您的ScrollView

+0

我得到的所有滚动事件转义Action.DOWN,但有时Action.DOWN也来 –

+0

尝试与ACTION.SCROLL,看看你是否可以赶上它。 –

+0

基本上我需要X1和X2,所以我可以决定滚动directon –