2016-04-01 30 views
1

最後のページをタブクリックしてスワイプするのを目指して 最後のページをクリックしたとき、または最後のページにスワイプしたときにトーストを表示できるようにコールバックが必要。ViewPagerスワイプとタブの最後のページを無効にする

現在、私は

public class CustomSwipeViewPager extends ViewPager { 

private boolean mLastPageEnabled = false; 
private int mLastPageIndex = 0; 

public NoSwipeViewPager(Context context) { 
    super(context); 
} 

public NoSwipeViewPager(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 

public void setLastPageEnabled(boolean enabled) { 
    mLastPageEnabled = enabled; 
} 

public void setLastPageIndex(int index) { 
    mLastPageIndex = index; 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent event){ 

    if(!mLastPageEnabled && getCurrentItem() >= (mLastPageIndex - 1)) { 
     // Always return false to disable user swipes 
     return false; 
    } 

    return true; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 

    if (!mLastPageEnabled && getCurrentItem() >= (mLastPageIndex - 1)) { 
     // Always return false to disable user swipes 
     return false; 
    } 

    return true; 
} 

}

答えて

1

を行うことができ、これを以下ではなく、午前はこれを試してみてください。これがあなたが望むように動作することを願っています。

@Override 
    public boolean onInterceptTouchEvent(MotionEvent event) { 



     if (!mLastPageEnabled && getCurrentItem() > (mLastPageIndex - 1)) { 

      switch (event.getAction()) { 
       case (MotionEvent.ACTION_DOWN): 
        x1 = event.getX(); 
        y1 = event.getY(); 
        break; 
       case (MotionEvent.ACTION_UP): { 
        x2 = event.getX(); 
        y2 = event.getY(); 
        dx = x2 - x1; 
        dy = y2 - y1; 

        // Use dx and dy to determine the direction 
        if (Math.abs(dx) > Math.abs(dy)) { 
         if (dx > 0) { 
          //right//previous 
          return super.onInterceptTouchEvent(event); 
         } else { 
          //left//next 
          return false; 
         } 
        } 
        else 
        { 
         return false; 
        } 
       } 
       break; 
      } 


     } 

     return super.onInterceptTouchEvent(event); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 

     if (!mLastPageEnabled && getCurrentItem() > (mLastPageIndex - 1)) { 

      switch (event.getAction()) { 
       case (MotionEvent.ACTION_DOWN): 
        x1 = event.getX(); 
        y1 = event.getY(); 
        break; 
       case (MotionEvent.ACTION_UP): { 
        x2 = event.getX(); 
        y2 = event.getY(); 
        dx = x2 - x1; 
        dy = y2 - y1; 

        // Use dx and dy to determine the direction 
        if (Math.abs(dx) > Math.abs(dy)) { 
         if (dx > 0) { 
          //right//previous 
          return super.onTouchEvent(event); 
         } else { 
          //left//next 
          return false; 
         } 
        } 
        else 
        { 
         return false; 
        } 
       } 
       break; 
      } 


     } 

     return super.onTouchEvent(event); 
    } 
+0

私はタブのクリックで停止することができる方法も – andro

+0

,,私は0-> 1、その後の1-> 2が無効であるスワイプすることができる午前1 – andro

+0

スワイプでも動作していないスワイプ0にやるときに動作していないあなたの状態が、私はスワイプすることができません1 - > 0 – andro

関連する問題