web-dev-qa-db-fra.com

Comment changer la couleur du texte de l'onglet sélectionné à l'aide de TabLayout à partir du code sous Android?

enter image description here

J'utilise Android.support.widget.TabLayout pour créer une vue par onglets et je souhaite modifier la couleur du texte des onglets sélectionnés à partir du code (pas à partir de xml ni par un style). Comment puis-je faire ceci ?

32
rastha67

Si vous utilisez la bibliothèque de support de conception, ajoutez ce code à votre activité de l'onglet.

tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FF0000"));
tabLayout.setSelectedTabIndicatorHeight((int) (5 * getResources().getDisplayMetrics().density));
tabLayout.setTabTextColors(Color.parseColor("#727272"), Color.parseColor("#ffffff"));

Cela définira le couleur du texte de l’onglet ainsi que la couleur de l’indicateur de l’onglet dans votre activité sur l’onglet.

70
Shaan_B

C'est si simple d'utiliser XML. Ajoutez simplement les 2 attributs suivants dans votre mise en page.

app:tabSelectedTextColor="@color/color_primary_text"
app:tabTextColor="@color/color_secondary_text"

Donc, votre code ressemblerait à quelque chose comme ça.

<Android.support.design.widget.TabLayout
    Android:id="@+id/tab_layout"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_alignParentBottom="true"
    Android:layout_alignParentStart="true"
    Android:layout_gravity="bottom"
    Android:background="@color/button_background"
    Android:fillViewport="true"
    app:tabBackground="@drawable/fixed_bottom_button"
    app:tabIndicatorColor="@color/color_primary_text"
    app:tabMode="fixed"
    app:tabSelectedTextColor="@color/color_primary_text"
    app:tabTextColor="@color/color_secondary_text" />
59

S'il vous plaît vérifier la réponse suivante

 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            View view = tab.getCustomView();
            RelativeLayout relativeLayout = (RelativeLayout) view.findViewById(R.id.layout_background);
            relativeLayout.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white));
            TypefacedTextView selectedText = (TypefacedTextView) view.findViewById(R.id.txt_tab_name);
            selectedText.setTextColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary));

        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
            View view = tab.getCustomView();
            RelativeLayout relativeLayout = (RelativeLayout) view.findViewById(R.id.layout_background);
            relativeLayout.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary));
            TypefacedTextView selectedText = (TypefacedTextView) view.findViewById(R.id.txt_tab_name);
            selectedText.setTextColor(ContextCompat.getColor(getActivity(), R.color.white));
        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

où tabLayout est l'objet de la classe TabLayout

12
Swapnil Kshirsagar

Je sais que cela pourrait être un peu tard, mais voici un code plus simple:

tabLayout.setTabTextColors(getResources().getColor(R.color.blue_200), getResources().getColor(R.color.white));

la première valeur est la couleur de texte par défaut, la deuxième valeur est la couleur de texte de l'onglet sélectionné.

2
hossam scott
tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FF0000"));
tabLayout.setSelectedTabIndicatorHeight((int) (5 * getResources().getDisplayMetrics().density));
tabLayout.setTabTextColors(Color.parseColor("#727272"), Color.parseColor("#ffffff"));
1
rastha67