web-dev-qa-db-fra.com

Taille du texte des onglets Android design TabLayout

J'ai des difficultés à modifier la taille du texte des onglets de la bibliothèque de conception tablayout (Android.support.design.widget.TabLayout).

J'ai réussi à le changer en assignant tabTextAppearance dans TabLayout

app:tabTextAppearance="@style/MyTabLayoutTextAppearance"

le style suivant

<style name="MyTabLayoutTextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse">
    <item name="Android:textSize">14sp</item>
</style>

mais j'ai 2 effets secondaires:

1) J'ai perdu la couleur d'accentuation de l'onglet sélectionné

2) Le texte de l'onglet n'est plus en majuscule.

79
Malko
<style name="MineCustomTabText" parent="TextAppearance.Design.Tab">
    <item name="Android:textSize">16sp</item>
</style>

L'utilisation est dans TabLayout comme ceci

<Android.support.design.widget.TabLayout
            app:tabTextAppearance="@style/MineCustomTabText"
            ...
            />
160
hnrain

Continuez à utiliser tabTextAppearance comme vous le faisiez mais

1) Pour corriger l’effet secondaire en majuscule, ajoutez textAllCap dans votre style:

<style name="MyTabLayoutTextAppearance" parent="TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse">
    <item name="Android:textSize">14sp</item>
    <item name="Android:textAllCaps">true</item>
</style>

2) pour corriger l'effet secondaire de couleur de l'onglet sélectionné, ajoutez à TabLayout xml les attributs de bibliothèque suivants:

app:tabSelectedTextColor="@color/color1"
app:tabTextColor="@color/color2" 

J'espère que cela t'aides.

41
u2gilles

Travaillez sur les api 22 et 23 Faites ce style:

<style name="TabLayoutStyle" parent="Base.Widget.Design.TabLayout">
    <item name="Android:textSize">12sp</item>
    <item name="Android:textAllCaps">true</item>
</style>

Et appliquez-le à votre tablayout:

<Android.support.design.widget.TabLayout
            Android:id="@+id/contentTabs"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:layout_marginTop="10dp"
            Android:background="@drawable/list_gray_border"
            app:tabTextAppearance="@style/TabLayoutStyle"
            app:tabSelectedTextColor="@color/colorPrimaryDark"
            app:tabTextColor="@color/colorGrey"
            app:tabMode="fixed"
            app:tabGravity="fill"/>
21
Luidgi Gromat

Faites comme suit.

1. Ajouter le style au XML

    <style name="MyTabLayoutTextAppearance" parent="TextAppearance.Design.Tab">
        <item name="Android:textSize">14sp</item>
    </style>

2. Appliquer le style

Recherchez la disposition contenant TabLayout et ajoutez le style. La ligne ajoutée est en gras.

    <Android.support.design.widget.TabLayout
        Android:id="@+id/tabs"
        app:tabTextAppearance="@style/MyTabLayoutTextAppearance" 
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content" />
14
Jay Halani

J'ai un problème similaire et une résolution similaire:

1) taille

dans le xml vous avez TabLayout,

        <Android.support.design.widget.TabLayout
            ...
            app:tabTextAppearance="@style/CustomTextStyle"
            ...
        />

puis avec style,

        <style name="CustomTextStyle" parent="@Android:style/TextAppearance.Widget.TabWidget">
           <item name="Android:textSize">16sp</item>
           <item name="Android:textAllCaps">true</item>
        </style>

Si vous ne voulez pas que les caractères en majuscules mettent false dans "Android: textAllCaps"

2) Couleur du texte des onglets sélectionnés ou non sélectionnés,

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        tabLayout.setTabTextColors(getResources().getColorStateList(R.color.tab_selector,null));
    } else {
        tabLayout.setTabTextColors(getResources().getColorStateList(R.color.tab_selector));
    }

puis dans res/color/tab_selector.xml

<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:color="@color/white" Android:state_selected="true" />
<item Android:color="@color/white" />
13
Martín Huergo

essayez ceci .... son travail pour moi ....

dans mon layout.xml j'ai utiliser quelque chose comme ça ....

<Android.support.design.widget.TabLayout
    Android:id="@+id/tab_layout"
    style="@style/MyCustomTabLayout"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    app:tabGravity="fill"
    app:tabMode="fixed" />

et dans mon style.xml, j’utilise quelque chose comme la paix du code ....

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
    <item name="Android:background">YOUR BACKGROUND COLOR</item>
    <item name="tabTextAppearance">@style/MyCustomTabText</item>
    <item name="tabSelectedTextColor">SELECTED TAB TEXT COLOR</item>
    <item name="tabIndicatorColor">SELECTED TAB INDICATOR COLOR</item>
</style>

<style name="MyCustomTabText" parent="TextAppearance.AppCompat.Button">
    <item name="Android:textSize">YOUR TEXT SIZE</item>
    <item name="Android:textStyle">bold</item>
    <item name="Android:textColor">@Android:color/white</item>
</style>

J'espère que cela fonctionnera pour vous .....

10
Angel
TabLayout  tab_layout = (TabLayout)findViewById(R.id.tab_Layout_);

private void changeTabsFont() {
    Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/"+ Constants.FontStyle);
    ViewGroup vg = (ViewGroup) tab_layout.getChildAt(0);
    int tabsCount = vg.getChildCount();
    for (int j = 0; j < tabsCount; j++) {
        ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
        int tabChildsCount = vgTab.getChildCount();
        for (int i = 0; i < tabChildsCount; i++) {
            View tabViewChild = vgTab.getChildAt(i);
            if (tabViewChild instanceof TextView) {
                ((TextView) tabViewChild).setTypeface(font);
                ((TextView) tabViewChild).setTextSize(15);

            }
        }
    }
}

Ce code fonctionne pour moi en utilisant tablayout. Il va changer la taille des polices et changer le style de police.

Cela vous aidera également les gars s'il vous plaît vérifier ce lien

https://stackoverflow.com/a/43156384/5973946

Ce code fonctionne pour Tablayout changer la couleur du texte, le caractère (style de police) et la taille du texte.

8
viral 9966

J'utilisais Android Pie et rien ne semblait fonctionner. J'ai donc joué avec l'attribut app: tabTextAppearance. Je sais que ce n'est pas la réponse parfaite, mais pourrait aider quelqu'un.

<Android.support.design.widget.TabLayout
        Android:id="@+id/tabs"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabTextAppearance="@style/TextAppearance.AppCompat.Caption" />
0
Surbhit Rao