Le texte des tabs TabLayout ne s’affiche pas

J’utilise TabLayout dans un Fragment pour afficher trois tabs fixes et les tabs fonctionnent, mais le texte de l’onglet n’est pas app:tabTextColor même après la app:tabTextColor atsortingbut app:tabTextColor dans la présentation.

NewFragment.java

 public class NewFragment extends Fragment { private RecyclerView mRecyclerView; private RecyclerView.LayoutManager mLayoutManager; private RecyclerView.Adapter mAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View inflatedView = inflater.inflate(R.layout.new_fragment, container, false); TabLayout tabLayout = (TabLayout) inflatedView.findViewById(R.id.tabLayout); tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); tabLayout.addTab(tabLayout.newTab().setText("Tab 3")); final ViewPager viewPager = (ViewPager) inflatedView.findViewById(R.id.viewpager); LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); viewPager.setAdapter(new PagerAdapter(getFragmentManager(), tabLayout.getTabCount())); viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); tabLayout.setupWithViewPager(viewPager); tabLayout.setTabMode(TabLayout.MODE_FIXED); tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { viewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } }); return inflatedView; } public class PagerAdapter extends FragmentStatePagerAdapter { int mNumOfTabs; public PagerAdapter(FragmentManager fm, int NumOfTabs) { super(fm); this.mNumOfTabs = NumOfTabs; } @Override public Fragment getItem(int position) { switch (position) { case 0: return new FragmentTab(); case 1: return new FragmentTab(); case 2: return new FragmentTab(); default: return null; } } @Override public int getCount() { return mNumOfTabs; } } } 

newfragment.xml

     

Le problème est que vous appelez setupWithViewPager() après avoir configuré vos tabs avec les addTab() , les écrasant efficacement.

De la documentation de TabLayout concernant setupWithViewPager() :

Les tabs affichés dans cette présentation seront remplis à partir des ViewPager de pages de l’adaptateur ViewPager .

Si vous souhaitez utiliser votre TabLayout avec un ViewPager , vous devez remplacer getPageTitle() dans votre PagerAdapter (et supprimer les addTab() , ils sont redondants).

Par exemple:

 public class ExamplePagerAdapter extends FragmentStatePagerAdapter { // tab titles private Ssortingng[] tabTitles = new Ssortingng[]{"Tab1", "Tab2", "Tab3"}; public ExamplePagerAdapter(FragmentManager fm) { super(fm); } // overriding getPageTitle() @Override public CharSequence getPageTitle(int position) { return tabTitles[position]; } @Override public Fragment getItem(int position) { switch (position) { case 0: return new Tab1Fragment(); case 1: return new Tab2Fragment(); case 2: return new Tab3Fragment(); default: return null; } } @Override public int getCount() { return tabTitles.length; } // ... } 

J’ai ajouté un texte d’onglet et une icône pour chaque onglet après avoir appelé tabs.setupWithViewPager(viewPager)

  viewPager.setAdapter(new MyViewAdapter(getSupportFragmentManager())); TabLayout tabs=(TabLayout) findViewById(R.id.tabs); tabs.setupWithViewPager(viewPager); tabs.getTabAt(0).setIcon(R.drawable.icon1); tabs.getTabAt(1).setIcon(R.drawable.icon2); tabs.getTabAt(0).setText(getResources().getText(R.ssortingng.tab1)); tabs.getTabAt(1).setText(getResources().getText(R.ssortingng.tab2));