Отключить пролистывание между вкладками в Android Tablayout

Я занимаюсь разработкой приложения для Android, в котором есть страница с табулатурой, включающая 2 вкладки, страницу списка и карту (обе являются фрагментами). Элементами списка являются пейджеры, содержащие изображения, но когда пользователь достигает последнего изображения в пейджере, вкладка табуляции получает следующее событие свайпинга и переключается на карту. Это также происходит, если пользователь пытается провести изображения, начиная с правой стороны экрана.

Я хотел бы полностью переключить функциональность смахивания между вкладками, но не нашел способа сделать это.

Вот как я настраиваю свои вкладки:

ViewPager fragmentPager = (ViewPager) findViewById(R.id.viewpager);
fragmentPager.setAdapter(new MyPagerAdapter);//extends FragmentPagerAdapter
TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
tabLayout.setupWithViewPager(fragmentPager);

1 ответ

Вы можете сделать это с помощью пользовательского просмотра пейджера.

Создайте имя класса Custom_viewpager и добавьте его в свой XML.

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;
}

когда вы хотите отключить смахивание, просто добавьте эти две строки.

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

Дайте мне знать, если это поможет.:)

Другие вопросы по тегам