2017-05-03 2 views
0

Weiß jemand, wie man verschiedene textAppearance für ausgewählte und nicht ausgewählte Registerkarten in einem TabsLayout setzen kann? Die documentation erwähnt nur eine Einheitsgröße tabTextAppearance zugeschrieben und ermöglicht nur die Einstellung einer anderen Farbe für die ausgewählte Registerkarte mit Hilfe von tabSelectedTextColor. Mein Ziel ist es, eine andere Schriftart auf der ausgewählten Registerkarte zu verwenden.Einstellen eines anderen textAppearance für ausgewählte und nicht ausgewählte Registerkarten in TabLayout

Antwort

1

dann sollten Sie es in onTabSelected von OnTabSelectedListener Schnittstelle tun

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0); 
      ViewGroup vgTab = (ViewGroup) vg.getChildAt(tab.getPosition()); 
      int tabChildsCount = vgTab.getChildCount(); 
      for (int i = 0; i < tabChildsCount; i++) { 
       View tabViewChild = vgTab.getChildAt(i); 
       if (tabViewChild instanceof TextView) { 
        ((TextView) tabViewChild).setTypeFace(TYPE_FACE); 
       } 
      } 
     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 
      ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0); 
      ViewGroup vgTab = (ViewGroup) vg.getChildAt(tab.getPosition()); 
      int tabChildsCount = vgTab.getChildCount(); 
      for (int i = 0; i < tabChildsCount; i++) { 
       View tabViewChild = vgTab.getChildAt(i); 
       if (tabViewChild instanceof TextView) { 
        ((TextView) tabViewChild).setTypeFace(TYPE_FACE); 
       } 
      } 
     } 
} 
Verwandte Themen