Rozmiar tekstu kart TabLayout projektu Androida

100

Mam trudności ze zmianą rozmiaru tekstu w zakładkach biblioteki projektów tablayout (android.support.design.widget.TabLayout).

Udało mi się to zmienić, przypisując tabTextAppearance w TabLayout

app:tabTextAppearance="@style/MyTabLayoutTextAppearance"

następujący styl

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

ale mam 2 efekty uboczne:

1) Zgubiłem kolor akcentu wybranej zakładki

2) Tekst tabulatora nie jest już pisany wielkimi literami.

Malko
źródło

Odpowiedzi:

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

Użycie jest w TabLayoutten sposób

<android.support.design.widget.TabLayout
            app:tabTextAppearance="@style/MineCustomTabText"
            ...
            />
hnrain
źródło
Pracować w porządku. Używam obsługi lib 25.1.0.
Sufian
Działa w bibliotece wsparcia 25.3.1
Luis
superb thax bro, oszczędzasz mój czas ,,, pracuje na lib 25.1.0
Kunal Dharaiya
@Sufian, to nie działa dla mnie i używam tej samej wersji wsparcia co Ty (25.1.0). Każdy pomysł, dlaczego?
Sam
2
Jeśli tekst tabulatora jest wielowierszowy. Następnie tabLayout go za pomocą innego pola, aby ustawić rozmiar tekstu. Proszę sprawdzić moją odpowiedź tutaj, aby uzyskać rozwiązanie: stackoverflow.com/a/48797329/700693
Evren Ozturk
47

Kontynuuj używanie tabTextAppearance, tak jak wcześniej, ale

1) aby naprawić efekt uboczny dużej litery, dodaj textAllCap w swoim stylu:

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

2) Aby naprawić efekt uboczny koloru wybranej zakładki, dodaj w TabLayout xml następujące atrybuty biblioteki:

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

Mam nadzieję że to pomoże.

u2gilles
źródło
Teraz działa jak urok. Dzięki u2gilles za szybką odpowiedź.
Malko,
@ u2gilles Użyłem niestandardowego układu na kartach, który jest układem liniowym z 2 widokami tekstu, ale chcę zmienić tylko jeden kolor widoku tekstu przy wyborze karty?
Erum
1
Jeśli chcesz ustawić <item name = "android: textAllCaps"> false </item>, to t tutaj powinien być jeszcze jeden ciąg oprócz dwóch: <item name = "textAllCaps"> false </item>
CodeToLife
25

Pracuj nad interfejsami API 22 i 23 Utwórz ten styl:

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

I zastosuj to do swojego układu:

<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
źródło
22

Wykonaj następujące czynności.

1. Dodaj Styl do XML

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

2. Zastosuj styl

Znajdź układ zawierający TabLayout i dodaj styl. Dodana linia jest pogrubiona.

    <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
źródło
18

Wypróbuj wycięte, które jest wymienione poniżej, działa również dla mnie.

W moim układzie, w xmlktórym mam mój TabLayout, dodałem styl do TabLayoutponiższego:

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

aw moim style.xmlzdefiniowałem styl, który jest używany w moim układzie XML, sprawdź kod stylów dodanych poniżej:

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

Mam nadzieję, że to zadziała .....

Anioł
źródło
15

Mam podobny problem i podobną rozdzielczość:

1) Rozmiar

w xml masz TabLayout,

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

potem w dobrym stylu,

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

Jeśli nie chcesz, aby znaki pisane wielkimi literami wstawiały wartość false w „android: textAllCaps”

2) Kolor tekstu zaznaczonych lub niezaznaczonych zakładek,

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

następnie w 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
źródło
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);

            }
        }
    }
}

Ten kod działa dla mnie przy użyciu tablayout. Zmieni rozmiar czcionek, a także zmieni styl czcionki.

Pomoże wam to również w sprawdzeniu tego linku

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

Ten kod działa dla zmiany koloru tekstu w Tablayout, kroju czcionki (stylu czcionki), a także rozmiaru tekstu.

wirusowy 9966
źródło
0

Używałem Androida Pie i nic nie działało, więc bawiłem się atrybutem app: tabTextAppearance. Wiem, że to nie jest doskonała odpowiedź, ale może komuś pomóc.

<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
źródło