Отключить пролистывание между вкладками в 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();
Дайте мне знать, если это поможет.:)