Faced with a unique challenge. When we set setCurrentItem. It does not change the tablayout tab. Then you need to add AddOnPageChangeListener to the viewpager, in which you need to select the tablayout tab manually for the selected viewpager position. Then setupWithViewPager.
Note. setupWithViewPager needs to be set only after adding addOnPageChangeListener. God knows why. This is what worked. if i setupWithViewPager before, it doesn't work. Again, the almighty knows.
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { viewPager.setCurrentItem(position,false); tabLayout.getTabAt(position).select(); } @Override public void onPageScrollStateChanged(int state) { } }); tabLayout.setupWithViewPager(this.viewPager);
source share