Viewpager setCurrentItem does not change the highlighted tablayout color

I use viewpager and layout layout

viewPager.setAdapter(Adapter); tablayout.setupWithViewPager(viewPager); viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { int cPage; @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { cPage = position; } @Override public void onPageScrollStateChanged(int state) { } }); 

now when i scroll through the selected tab color but when i call

  viewPager.setCurrentItem(1, true); 

Does not change the new tab layout color. say I have 2 tabs when I am in the 1st to set the text color to green for the 1st tab, and when I spent it, getting the green color of the second tab, but when I call

  viewPager.setCurrentItem(1, true); 

in this my first tab green is not the second tab

+6
source share
5 answers

fooobar.com/questions/1001073 / ...

//mViewPager.setCurrentItem(position);

mTabLayout.getTabAt (position) .select ();

+6
source

Try it worked for me ...

 tabLayout.setScrollPosition(position,0f,true); 
+4
source

In your activity:

  // init TabLayout TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); if (mCallFrom.equalsIgnoreCase(ActivityConstantUtils.sCalledFromActPanel)) { // To add Memory tabLayout.addTab(tabLayout.newTab().setText(R.string.add_memory_caption)); tabLayout.addTab(tabLayout.newTab().setText(R.string.add_memory_effects)); // tabLayout.addTab(tabLayout.newTab().setText(R.string.add_memory_frames)); } else { // To add Memory from Recipe & Blog tabLayout.addTab(tabLayout.newTab().setText(R.string.add_memory_caption)); tabLayout.setSelectedTabIndicatorColor(Color.TRANSPARENT); } changeTabsFont(tabLayout); showDivider(tabLayout); tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); final ViewPager viewPager = (ViewPager) getActivity().findViewById(R.id.pager); final PagerAdapter adapter = new PagerAdapter(this.getFragmentManager(), tabLayout.getTabCount()); viewPager.setAdapter(adapter); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { if (tab.getPosition() == 1) { Utils.hideSoftKeyboard(view, getActivity()); } viewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } }); 

// Style applied to tablayout

 <style name="ActPanelTabLayout.Theme" parent="Widget.Design.TabLayout"> <item name="tabIndicatorColor">@color/memory_color_80</item>\ <item name="android:textColor">@color/act_tab_black</item> <item name="tabSelectedTextColor">@color/act_tab_selector_text_color</item> <item name="tabTextAppearance">@style/TextAppearance.Jacksonville.ActTab</item> </style> 
+1
source

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) { } }); /* NOTE: This is setup after addOnPageChangeListener. Don't know why but this is what works. Otherwise tabLayout.does not select. */ tabLayout.setupWithViewPager(this.viewPager); 
0
source

There is a known error in the design support library, even in version 24.1.1, it exists, I was able to find work on this problem using the coordinator layout as the parent (root) layout

0
source

All Articles