2015-12-30 5 views
2

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

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

Это, как я настроить мои закладки:

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

Viewpager 'onPageChangeListener'' return false' может останавливать вкладки от переключения. Но если вы вставляете часть источника, то, что вы пробовали здесь, может помочь нам решить ваш запрос. –

+0

проблема заключается в том, что tablayout не является viewpager, он расширяет HorizontalScrollView. Вопрос обновлен кодом, спасибо за вашу помощь! – Analizer

+0

Вы говорите, что NonSwipeableViewPager? – sector11

ответ

0

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

Сделайте класс Имя 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(); 

Сообщите мне, если это поможет. :)