Dimensioni del testo delle schede TabLayout di progettazione Android


95

Ho difficoltà a modificare la dimensione del testo delle schede del tablayout della libreria di progettazione (android.support.design.widget.TabLayout).

Sono riuscito a cambiarlo assegnando tabTextAppearance in TabLayout

app:tabTextAppearance="@style/MyTabLayoutTextAppearance"

il seguente stile

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

ma ho 2 effetti collaterali:

1) Ho perso il colore dell'accento della scheda selezionata

2) Il testo della tabulazione non è più in maiuscolo.

Risposte:


186
<style name="MineCustomTabText" parent="TextAppearance.Design.Tab">
    <item name="android:textSize">16sp</item>
</style>

L'uso è in TabLayoutquesto modo

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

Funziona bene. Sto usando il supporto lib 25.1.0.
Sufian

Lavora sulla libreria di supporto 25.3.1
Luis

superbo fratello thax mi risparmi tempo ,,, funziona su lib 25.1.0
Kunal Dharaiya

@ Sufian, non funziona per me e sto usando la tua stessa versione di supporto (25.1.0). Qualche idea sul perché?
Sam

2
Se il testo della tabulazione è multilinea. Quindi la tabLayout utilizzando un campo diverso per impostare la dimensione del testo. Si prega di controllare la mia risposta qui per la soluzione: stackoverflow.com/a/48797329/700693
Evren Ozturk

46

Continua a usare tabTextAppearance come hai fatto ma

1) per correggere l'effetto collaterale della lettera maiuscola aggiungi textAllCap nel tuo stile:

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

2) per correggere l'effetto collaterale del colore della scheda selezionata, aggiungere in TabLayout xml i seguenti attributi della libreria:

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

Spero che questo ti aiuti.


Ora funziona come un incantesimo. Grazie u2gilles per la tua pronta risposta.
Malko

@ u2gilles ho usato il layout personalizzato nelle schede che è linearlayout con 2 visualizzazioni di testo ma voglio cambiare solo un colore di visualizzazione di testo nella selezione delle schede?
Erum

1
Se desideri impostare <item name = "android: textAllCaps"> false </item>, dovrebbe esserci un'altra stringa in aggiunta a due: <item name = "textAllCaps"> false </item>
CodeToLife

24

Lavora su API 22 e 23 Crea questo stile:

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

E applicalo al tuo 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

Fai come segue.

1. Aggiungere lo stile all'XML

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

2. Applica stile

Trova il layout contenente il TabLayout e aggiungi lo stile. La linea aggiunta è in grassetto.

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

17

Prova lo snipped che è menzionato di seguito, funziona anche per me.

Nel mio layout in xmlcui ho il mio TabLayout, ho aggiunto uno stile al TabLayoutseguente:

<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" />

e nel mio style.xmlho definito lo stile che viene utilizzato nel mio layout xml, controlla il codice per gli stili aggiunti di seguito:

<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>

Spero che funzioni per te .....


15

Ho un problema simile e una risoluzione simile:

1) Dimensioni

nell'xml hai TabLayout,

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

poi con stile,

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

Se non vuoi che i caratteri in maiuscolo mettano false in "android: textAllCaps"

2) Colore del testo delle schede selezionate o non selezionate,

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));
    }

quindi in 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" />


8
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);

            }
        }
    }
}

Questo codice funziona per me usando tablayout. Cambierà la dimensione dei caratteri e cambierà anche lo stile del carattere.

Questo ti aiuterà anche a controllare questo link

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

Questo codice funziona per Tablayout cambia il colore del testo, il tipo di carattere (stile del carattere) e anche la dimensione del testo.


0

Stavo usando Android Pie e nulla sembrava funzionare, quindi ho giocato con l'attributo app: tabTextAppearance. So che non è la risposta perfetta ma potrebbe aiutare qualcuno.

<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" />
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.