Textgröße von Android Design TabLayout-Registerkarten

95

Ich habe Schwierigkeiten, die Textgröße der Registerkarten des Tablayout der Designbibliothek (android.support.design.widget.TabLayout) zu ändern.

Ich konnte es ändern, indem ich tabTextAppearance in TabLayout zuwies

app:tabTextAppearance="@style/MyTabLayoutTextAppearance"

der folgende Stil

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

aber ich habe 2 Nebenwirkungen:

1) Ich habe die Akzentfarbe der ausgewählten Registerkarte verloren

2) Der Tabulatortext wird nicht mehr großgeschrieben.

Malko
quelle

Antworten:

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

Verwendung ist in TabLayoutso

<android.support.design.widget.TabLayout
            app:tabTextAppearance="@style/MineCustomTabText"
            ...
            />
hnrain
quelle
Funktioniert gut. Ich verwende Support Lib 25.1.0.
Sufian
Arbeitet an der Support-Bibliothek 25.3.1
Luis
super thax bro du sparst meine zeit ,,, es arbeitet an lib 25.1.0
Kunal Dharaiya
@ Sufian, es funktioniert nicht bei mir und ich verwende dieselbe Support-Version wie Sie (25.1.0). Irgendeine Idee warum?
Sam
2
Wenn Ihr Tabulatortext mehrzeilig ist. Dann die RegisterkarteLayout es mit einem anderen Feld, um die Textgröße festzulegen. Bitte überprüfen
Evren Ozturk
46

Verwenden Sie tabTextAppearance weiterhin wie bisher

1) Um den Nebeneffekt des Großbuchstabens zu beheben, fügen Sie textAllCap in Ihrem Stil hinzu:

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

2) Um den ausgewählten Nebeneffekt der Tabulatorfarbe zu beheben, fügen Sie in TabLayout xml die folgenden Bibliotheksattribute hinzu:

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

Hoffe das hilft.

u2gilles
quelle
Es funktioniert jetzt wie ein Zauber. Vielen Dank an u2gilles für Ihre schnelle Antwort.
Malko
@ u2gilles Ich habe ein benutzerdefiniertes Layout in Registerkarten verwendet, das ein lineares Layout mit 2 Textansichten ist, aber ich möchte nur eine Textansichtsfarbe bei der Auswahl der Registerkarten ändern.
Erum
1
Wenn Sie <item name = "android: textAllCaps"> false </ item> setzen möchten, sollte hier zusätzlich zu zwei eine weitere Zeichenfolge stehen: <item name = "textAllCaps"> false </ item>
CodeToLife
24

Arbeiten Sie an API 22 & 23 Machen Sie diesen Stil:

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

Und wende es auf dein Tablayout an:

<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"/>
Luidgi Gromat
quelle
21

Gehen Sie wie folgt vor.

1. Fügen Sie den Stil zum XML hinzu

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

2. Stil anwenden

Suchen Sie das Layout mit dem TabLayout und fügen Sie den Stil hinzu. Die hinzugefügte Zeile ist fett gedruckt.

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

Probieren Sie das unten erwähnte Snipped aus, es funktioniert auch bei mir.

In meinem Layout, xmlin dem ich meinen habe TabLayout, habe ich dem TabLayoutFolgenden Stil hinzugefügt :

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

und in meinem style.xmlIch habe den Stil definiert, der in meiner Layout-XML verwendet wird. Überprüfen Sie den Code für die unten hinzugefügten Stile:

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

Ich hoffe es wird für dich funktionieren .....

Engel
quelle
15

Ich habe ein ähnliches Problem und eine ähnliche Auflösung:

1) Größe

in der XML haben Sie TabLayout,

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

dann mit Stil,

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

Wenn Sie nicht möchten, dass die Zeichen in Großbuchstaben gesetzt werden, geben Sie in "android: textAllCaps" false ein.

2) Textfarbe ausgewählter oder nicht ausgewählter Registerkarten,

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

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

Martín Huergo
quelle
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);

            }
        }
    }
}

Dieser Code funktioniert bei mir mit tablayout. Dadurch wird die Schriftgröße und auch der Schriftstil geändert.

Dies wird euch auch helfen, bitte überprüft diesen Link

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

Dieser Code funktioniert für Tablayout. Ändern Sie die Textfarbe, geben Sie das Gesicht (Schriftstil) und die Textgröße ein.

viral 9966
quelle
0

Ich habe Android Pie verwendet und nichts schien zu funktionieren, also habe ich mit dem Attribut app: tabTextAppearance herumgespielt. Ich weiß, dass es nicht die perfekte Antwort ist, aber vielleicht jemandem helfen könnte.

<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" />
Surbhit Rao
quelle