15

I am creating an application contains of view pager with swipe-able tabs i want to do some operations inside view pager and at the time of operations i want to disable the swipe view after operations done enable the swipe view can any one tell me how to do this and my activity was extending to the fragment activity thanks in advance

lakshman sundeep
  • 165
  • 1
  • 1
  • 7

2 Answers2

41

Create a new class which named CustomViewPager. The class inherits from ViewPager and includes a new method called setPagingEnabled. To enable / disable the swiping, just overwrite two methods: onTouchEvent and onInterceptTouchEvent. Both return false if the paging is disabled.

Here is the full code:

package com.yourpackage;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;

public class CustomViewPager extends ViewPager {

private boolean enabled;

public CustomViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.enabled = true;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (this.enabled) {
        return super.onTouchEvent(event);
    }

    return false;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    if (this.enabled) {
        return super.onInterceptTouchEvent(event);
    }

    return false;
}

public void setPagingEnabled(boolean enabled) {
    this.enabled = enabled;
}
}

Then in your layout.xml file replace any <com.android.support.V4.ViewPager> tags with <com.yourpackage.CustomViewPager> tags like below.

<com.yourpackage.CustomViewPager 
android:id="@+id/photosViewPager" 
android:layout_height="match_parent" 
android:layout_width="match_parent" />

Now use CustomViewPager instead of ViewPager in your activity. And that's it. Now, anytime to disable the swiping, just need to call the setPagingEnabled method with false.

CustomViewPager mViewPager = (CustomViewPager) findViewById(R.id.pager);
mViewPager.setPagingEnabled(false);
Priyank Patel
  • 12,244
  • 8
  • 65
  • 85
-5

Try below methods

To disable swiping call

viewPager.beginFakeDrag();

To enable swiping call

viewPager.endFakeDrag();
Chandrakanth
  • 3,711
  • 2
  • 18
  • 31