3

I'm developing an android app that has a page with a tablayout including 2 tabs, a list page and a map (both are fragments). The list elements are viewpagers holding images, but when the user reaches the last image in the viewpager, the tablayout gets the next swipe event and it switches to the map. This also happens if the user tries to swipe the images starting at the very right side of the screen.

I'd like to switch of the swipe functionality between the tabs completely, but didn't find a way to do it so.

This is how I setup my tabs:

ViewPager fragmentPager = (ViewPager) findViewById(R.id.viewpager);
fragmentPager.setAdapter(new MyPagerAdapter);//extends FragmentPagerAdapter
TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
tabLayout.setupWithViewPager(fragmentPager);
Analizer
  • 1,594
  • 16
  • 30

1 Answers1

0

you can do this with custom view pager.

Make a class Name Custom_viewpager and extends it in your XML also.

public class Custom_viewpager extends ViewPager {

private boolean enabled;

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

@Override
public boolean onTouchEvent(MotionEvent event) {
    return enabled ? super.onTouchEvent(event) : false;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
    return enabled ? super.onInterceptTouchEvent(event) : false;
}

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

public boolean isPagingEnabled() {
    return enabled;
}

when you want to disable swipe just add this two lines.

viewPager.setPagingEnabled(false);
viewPager.beginFakeDrag();

Let me know if it helps. :)

Sam
  • 171
  • 1
  • 11