Android tasarımının metin boyutu TabLayout sekmeleri


103

Tasarım kitaplığı sekme düzeninin (android.support.design.widget.TabLayout) sekmelerinin metin boyutunu değiştirmekte zorlanıyorum.

TabLayout'ta tabTextAppearance'ı atayarak değiştirmeyi başardım

app:tabTextAppearance="@style/MyTabLayoutTextAppearance"

aşağıdaki stil

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

ama 2 yan etkim var:

1) Seçili sekmenin vurgu rengini kaybettim

2) Sekme metni artık büyük harfle yazılmamaktadır.

Yanıtlar:


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

Bunun TabLayoutgibi kullanım

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

İyi çalışıyor. Destek kitaplığı 25.1.0 kullanıyorum.
Sufian

Destek kitaplığı 25.3.1 üzerinde çalışıyor
Luis

süper thax kardeşim zamanımı kurtarıyorsun ,,, onun lib üzerinde çalışıyor 25.1.0
Kunal Dharaiya

@Sufian, benim için çalışmıyor ve sizinle aynı destek sürümünü kullanıyorum (25.1.0). Herhangi bir fikrin neden?
Sam

3
Sekme metniniz çok satırlıysa. Sonra tabLayout, metin boyutunu ayarlamak için farklı bir alan kullanarak. Lütfen çözüm için cevabımı buradan kontrol edin: stackoverflow.com/a/48797329/700693
Evren Öztürk

48

Yaptığınız gibi tabTextAppearance'ı kullanmaya devam edin, ancak

1) büyük harf yan etkisini düzeltmek için stilinize textAllCap ekleyin:

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

2) seçili sekme rengi yan etkisini düzeltmek için TabLayout xml'de aşağıdaki kitaplık niteliklerini ekleyin:

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

Bu yardımcı olur umarım.


Şimdi bir cazibe gibi çalışıyor. Hızlı cevabınız için teşekkürler u2gilles.
Malko

@ u2gilles Sekmelerde 2 metin görünümlü doğrusal düzen olan özel düzen kullandım ancak sekme seçiminde yalnızca bir metin görünümü rengini değiştirmek istiyorum?
Erum

1
<İtem name = "android: textAllCaps"> false </item> ayarlamak istiyorsanız, burada t ikiye ek olarak bir dize daha olmalıdır: <item name = "textAllCaps"> false </item>
CodeToLife

26

API 22 ve 23 üzerinde çalışın Bu stili yapın:

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

Ve bunu sekme düzeninize uygulayın:

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

22

Aşağıdaki gibi yapın.

1. Stili XML'e Ekleyin

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

2. Stili Uygula

TabLayout'u içeren Layout'u bulun ve stili ekleyin. Eklenen satır kalın.

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

19

Aşağıda belirtilen kırpılmışı deneyin, benim için de çalışıyor.

Benim düzende xmlben benim var TabLayout, stil eklemiş TabLayoutgibi aşağıda:

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

ve benim style.xmlxml düzenimde kullanılan stili tanımladım, aşağıya eklenen stiller için kodu kontrol edin:

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

Umarım işinize yarayacak .....


15

Benzer bir sorunum ve benzer bir çözümüm var:

1) Boyut

xml'de TabLayout'a sahipsiniz,

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

sonra şık

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

Büyük harfli karakterleri istemiyorsanız, "android: textAllCaps" içine false koyun

2) Seçilmiş veya seçilmemiş Sekmelerin yazı rengi,

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

sonra res / color / tab_selector.xml'de

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

            }
        }
    }
}

Bu kod benim için tablayout kullanarak çalışıyor. Yazı tiplerinin boyutunu değiştirecek ve ayrıca yazı tipi stilini değiştirecektir.

Bu ayrıca size yardımcı olacaktır, lütfen bu bağlantıyı kontrol edin

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

Bu kod, Tablayout metin rengini değiştir, yazı yüzü (yazı tipi stili) ve ayrıca metin boyutu için çalışır.


0

Android Pie kullanıyordum ve hiçbir şey işe yaramadı, bu yüzden app: tabTextAppearance özniteliğiyle oynadım. Bunun mükemmel bir cevap olmadığını biliyorum ama birine yardımcı olabilir.

<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" />
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.