Android tasarım desteğinde sekme metninin yazı tipini değiştirin TabLayout


109

TabLayoutAndroid tasarım kitaplığından yeni üzerinde çalışmaya çalışıyorum .

Sekme metnini özel yazı tipine dönüştürmek istiyorum . Ve ben ilişkin bazı stil aramak çalıştı TabLayoutancak bunlarla sona erdi bu .

Lütfen sekme metin yazı tiplerini nasıl değiştirebilirim.


3
Spannable String Kullan
NullByte

Yanıtlar:


37

Java Kodundan veya bunun gibi XML'den bir TextView oluşturun

<?xml version="1.0" encoding="utf-8"?>
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:textSize="15sp"
    android:textColor="@color/tabs_default_color"
    android:gravity="center"
    android:layout_height="match_parent"
/>

Kimliği burada olduğu gibi tuttuğunuzdan emin olun çünkü özel metin görünümü kullanıyorsanız TabLayout bu kimliği kontrol eder.

Ardından, koddan bu düzeni şişirin ve Typefacebu metin görünümündeki özelliği ayarlayın ve bu özel görünümü sekmeye ekleyin

for (int i = 0; i < tabLayout.getTabCount(); i++) {
     //noinspection ConstantConditions
     TextView tv = (TextView)LayoutInflater.from(this).inflate(R.layout.custom_tab,null)
     tv.setTypeface(Typeface);       
     tabLayout.getTabAt(i).setCustomView(tv);
}

2
Nasıl ayarlayabilir tabTextColorve tabSelectedTextColorbu durumda özellik?
Alireza Noorali


162

Kullanıyorsanız TabLayoutve yazı tipini değiştirmek istiyorsanız, önceki çözüme aşağıdaki gibi yeni bir for döngüsü eklemeniz gerekir:

private void changeTabsFont() {
    ViewGroup vg = (ViewGroup) tabLayout.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.getInstance().getTypeFace(), Typeface.NORMAL);
                }
        }
    }
} 

Lütfen sherlock kullanarak işlem çubuğu sekmelerindeki yazı tipi stilini değiştirmeye bakın


M önizlemesini kullanmıyorum. Bunu yapmanın başka bir yolu var mı?
Dory

1
M ön izlemesine ihtiyacınız yok, kullanan herkes için geçerlidirTabLayout
Mario Velasco

Ancak, android.view.View android.support.design.widget.TabLayout.getChildAt (int) üzerinde bir NullPointerException ile karşılaşıyorum, bunu düzeltmeme yardım eder misiniz? Kodumda eksik olanı bulamıyorum.
brettbrdls

1
İlk parametresi setTypeFacebir olduğunu TypeFacesen bulamazsa durumunda, Font(benim için var görünmüyor) sınıfı
Vahid Amiri

105

Kendi özel stilinizi oluşturun ve ana stili şu şekilde kullanın: parent="@android:style/TextAppearance.Widget.TabWidget"

Sekme düzeninizde bu stili şu şekilde kullanın: app:tabTextAppearance="@style/tab_text"

Örnek: Stil:

<style name="tab_text" parent="@android:style/TextAppearance.Widget.TabWidget">
    <item name="android:fontFamily">@font/poppins_regular</item>
</style>

Örnek: Sekme düzeni bileşeni:

<android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?attr/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:tabTextAppearance="@style/tab_text" />

9
Bu doğru, parent="TextAppearance.Design.Tab"benim durumumda kullanıyorum .
Javatar

1
Bu, ilk cevaplardan çok daha iyi çalışıyor ve gelecekte bir şeyleri bozabilecek kara büyü (gizli api) olmadan
Sulfkain

2
sadece fontFamily kullandığınızda çalışın, fontPath kullanılırken çalışmayın
Tram Nguyen

2
Kullanırken tuhaf istisnalar alıyordum TextAppearance.Widget.TabWidget. @Javatar'ın cevabı benim için sorunu çözdü.
funct7

47

Praveen Sharma'dan harika cevap. Sadece küçük bir eklenti: changeTabsFont()İhtiyaç duyduğunuz her yerde kullanmak yerine TabLayout, kendinizinkini kullanabilirsiniz CustomTabLayout.

import android.content.Context;
import android.graphics.Typeface;
import android.support.design.widget.TabLayout;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class CustomTabLayout extends TabLayout {
    private Typeface mTypeface;

    public CustomTabLayout(Context context) {
        super(context);
        init();
    }

    public CustomTabLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public CustomTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        mTypeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Regular.ttf");
    }

    @Override
    public void addTab(Tab tab) {
        super.addTab(tab);

        ViewGroup mainView = (ViewGroup) getChildAt(0);
        ViewGroup tabView = (ViewGroup) mainView.getChildAt(tab.getPosition());

        int tabChildCount = tabView.getChildCount();
        for (int i = 0; i < tabChildCount; i++) {
            View tabViewChild = tabView.getChildAt(i);
            if (tabViewChild instanceof TextView) {
                ((TextView) tabViewChild).setTypeface(mTypeface, Typeface.NORMAL);
            }
        }
    }

}

Ve bir şey daha. TabViewa, LinearLayoutolan TextViewiç (aynı zamanda, isteğe bağlı olarak içerebilir ImageView). Böylece kodu daha da basitleştirebilirsiniz:

@Override
public void addTab(Tab tab) {
    super.addTab(tab);

    ViewGroup mainView = (ViewGroup) getChildAt(0);
    ViewGroup tabView = (ViewGroup) mainView.getChildAt(tab.getPosition());
    View tabViewChild = tabView.getChildAt(1);
    ((TextView) tabViewChild).setTypeface(mTypeface, Typeface.NORMAL);
}

Ama bu şekilde tavsiye etmem. Eğer TabLayoutuygulama değişecek, bu kod düzgün çalışmamasına ve hatta çökmesine sebep olabilir.

Özelleştirmenin başka bir yolu TabLayout, ona özel görünüm eklemektir. İşte harika bir örnek .


addTab, aşağıdaki gibi sekmeler ayarlamanız durumunda çağrılmayacaktır: mViewPager.setAdapter (new YourPagerAdapter (getChildFragmentManager ())); mTabLayout.setupWithViewPager (mViewPager);
Penzzz

2
@Penzzz kesinlikle haklısın. Bu durumda kodu addTab yönteminden diğerine taşımalısınız. Örneğin onMeasure.
Andrei Aulaska

@AndreiAulaska thnx Günümü kurtardın. Son Bağlantın beni kurtar.
Amol Dale

bu artık çalışmıyor sanırım son sürümde. @ ejw'nin cevabı artık çalışıyor. addTab'a eklemeniz gerekir (Sekme sekmesi, boolean setSelected)
Sayem

3
Bu iyi çalışıyor. NOT: 25.x destek kitaplığından itibaren, addTab(Tab tab, int position, boolean setSelected)bunun yerine geçersiz kılmanız gerekir addTab(Tab tab).
Vicky Chijwani

20

XMLÖzellik içinde yazı tipi desteğini Android 4.1(API düzeyi 16) ve üstü çalışan cihazlarda kullanmak için Destek Kitaplığı 26+ kullanın.

  1. Res klasörüne sağ tıklayın
  2. Yeni -> Android kaynak dizini-> yazı tipini seçin -> Tamam
  3. myfont.ttfDosyanızı yeni oluşturulan yazı tipi klasörüne koyun

Açık res/values/styles.xmleklenti:

<style name="customfontstyle" parent="@android:style/TextAppearance.Small">
    <item name="android:fontFamily">@font/myfont</item>
</style>

Düzen dosyasına uygulama ekleyin: tabTextAppearance = "@ style / customfontstyle",

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabGravity="fill"
    app:tabTextAppearance="@style/customfontstyle"
    app:tabMode="fixed" />

Lütfen [xml yazı tiplerine] bakın. ( Https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml )


xamarin formları ve xamarin android.thanks üzerinde çalışır
Esmail Jamshidiasl

Mükemmel cevap! Yine de "TextAppearance.Design.Tab" genişletilmelidir
XY

16

Aşağıdaki yöntem, yazı tipini tümüyle ViewGroupözyinelemeli olarak değiştirecektir . Ben bu yöntemi seçtim çünkü iç yapısını önemsemenize gerek yok TabLayout. Yazı tipi ayarlamak için Kaligrafi kitaplığı kullanıyorum .

void changeFontInViewGroup(ViewGroup viewGroup, String fontPath) {
    for (int i = 0; i < viewGroup.getChildCount(); i++) {
        View child = viewGroup.getChildAt(i);
        if (TextView.class.isAssignableFrom(child.getClass())) {
            CalligraphyUtils.applyFontToTextView(child.getContext(), (TextView) child, fontPath);
        } else if (ViewGroup.class.isAssignableFrom(child.getClass())) {
            changeFontInViewGroup((ViewGroup) viewGroup.getChildAt(i), fontPath);
        }
    }
}

1
bununla ilgili sorun, düzeni bir Viewpager'a eklerseniz, özelleştirilmiş yazı tiplerini kaybedersiniz.
2017

10

23.2.0 tasarım desteği için, setupWithViewPager kullanarak, kodu addTab'den (Sekme sekmesi) addTab'e (Sekme sekmesi, boolean setSelected) taşımanız gerekir.


8

Bunu kullanabilirsin, benim için çalışıyor.

 private void changeTabsFont() {
    ViewGroup vg = (ViewGroup) tabLayout.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) {
                AssetManager mgr = getActivity().getAssets();
                Typeface tf = Typeface.createFromAsset(mgr, "fonts/Roboto-Regular.ttf");//Font file in /assets
                ((TextView) tabViewChild).setTypeface(tf);
            }
        }
    }
}

7

23.4.0'da döngü kullanmadan basit buldum. @Ejw tarafından önerildiği gibi addTab'ı (@NonNull Tab sekmesi, boolean setSelected) geçersiz kılmanız yeterlidir.

@Override
public void addTab(@NonNull Tab tab, boolean setSelected) {
    CoralBoldTextView coralTabView = (CoralBoldTextView) View.inflate(getContext(), R.layout.coral_tab_layout_view, null);
    coralTabView.setText(tab.getText());
    tab.setCustomView(coralTabView);

    super.addTab(tab, setSelected);
}

Ve işte XML

<?xml version="1.0" encoding="utf-8"?>
<id.co.coralshop.skyfish.ui.CoralBoldTextView
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/custom_text"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:ellipsize="end"
   android:gravity="center"
   android:singleLine="true"
   android:textColor="@color/graylove"
   android:textSize="@dimen/tab_text_size" />

Umarım yardımcı olabilir :)


1
Ancak tabSelectedTextColor ve tabTextColo nasıl ayarlanır?
Mostafa Imran

@MostafaImran sürümünüz, android:textColor="@color/graylove"state_selected renk belirtilmiş olan bunun için durum listesi seçicisine sahip olmalıdır
AA_PV

7

As Andrei cevap verdi, sen uzatarak font yüzü değiştirebilir TabLayout sınıfını. Ve Penzzz'in dediği gibi, bunu addTab yöntemiyle yapamazsınız . OnLayout yöntemini aşağıdaki gibi geçersiz kıl :

@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom){
    super.onLayout(changed, left, top, right, bottom);

    final ViewGroup tabStrip = (ViewGroup)getChildAt(0);
    final int tabCount = tabStrip.getChildCount();
    ViewGroup tabView;
    int tabChildCount;
    View tabViewChild;

    for(int i=0; i<tabCount; i++){
        tabView = (ViewGroup)tabStrip.getChildAt(i);
        tabChildCount = tabView.getChildCount();
        for(int j=0; j<tabChildCount; j++){
            tabViewChild = tabView.getChildAt(j);
            if(tabViewChild instanceof AppCompatTextView){
                if(fontFace == null){
                    fontFace = Typeface.createFromAsset(context.getAssets(), context.getString(R.string.IranSans));
                }
                ((TextView) tabViewChild).setTypeface(fontFace, Typeface.BOLD);
            }
        }
    }
}

OnLayout yönteminin üzerine yazılmalıdır, çünkü TabLayout'u ViewPager ile bağlamak için setupWithViewPager yöntemini kullandığınızda , setText yöntemiyle veya PagerAdapter'da sekme metnini ayarlamanız gerekir ve bu gerçekleştiğinde, onLayout yöntemi üst ViewGroup'ta çağrılır ( TabLayout) ve bu, fontface ayarının yerleştirileceği yerdir. (Bir TextView metnini değiştirmek, üst öğesinin onLayout yöntemini çağırmaya neden olur - Bir tabView iki alt öğeye sahiptir, biri ImageView diğeri TextView'dur)

Başka bir çözüm:

İlk olarak, bu kod satırları:

    if(fontFace == null){
        fontFace = Typeface.createFromAsset(context.getAssets(), context.getString(R.string.IranSans));
    }

Yukarıdaki çözümde, iki döngünün dışında yazılmalıdır.

Ama daha iyi bir çözüm API> = 16 kullanıyor android: fontFamily :

Font adlı bir Android Kaynak Dizini oluşturun ve istediğiniz yazı tipini dizine kopyalayın.

Ardından şu stilleri kullanın:

<style name="tabLayoutTitles">
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">@dimen/appFirstFontSize</item>
    <item name="android:fontFamily">@font/vazir_bold</item>
</style>

<style name="defaultTabLayout">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">@dimen/defaultTabLayoutHeight</item>
    <item name="android:gravity">right</item>
    <item name="tabTextAppearance">@style/tabLayoutTitles</item>
    <item name="tabSelectedTextColor">@color/white</item>
    <item name="tabIndicatorColor">@color/white</item>
    <item name="tabIndicatorHeight">@dimen/accomTabIndicatorHeight</item>
    <item name="tabMode">fixed</item>
    <item name="tabGravity">fill</item>
    <item name="tabBackground">@drawable/rectangle_white_ripple</item>
    <item name="android:background">@color/colorPrimary</item>
</style>

Bu kötü bir performans düzeltmesidir, onLayout()sekme değiştirme gibi her düzen değişikliğinde çağrılır ve hatta sekmelerin altında kayan liste, forbirçok sekme TabLayoutuygulamasında iç içe geçmiş URL'ler gecikmeli olacaktır.
Amr Barakat

2
@Amr Barakat. Bu bağlantıya göre: developer.android.com/reference/android/view/… , int, int, int, int), bu doğru değil. Ben de test ettim. OnLayout yöntemine bir kırılma noktası koyuyorum ve sekme geçişinde veya liste kaydırmada değil sekmeler oluşturulduğunda çağrılıyor.
Arash

1
Benim onLayout()için sekme değiştirirken birden çok kez çağrılıyor (tam olarak neden olduğundan emin değilim), ancak bunu hesaba katmak için yazı tiplerini yalnızca boolean changeddoğru olduğunda ayarlıyorum . Yazı tiplerinin birden çok kez ayarlanmasını engelleyen.
Robert

harika çözüm, kod gerekmez, yalnızca xml özellikleri
dikkatli7j

3

Benim Çözme yöntemim aynen bunun gibi, Belirtilen sekme metnini değiştirin,

 ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
 ViewGroup vgTab = (ViewGroup) vg.getChildAt(1);
 View tabViewChild = vgTab.getChildAt(1);
 if (tabViewChild instanceof TextView) {
      ((TextView) tabViewChild).setText(str);
 }

2
I think this is easier way.

<android.support.design.widget.TabLayout
   android:id="@+id/tabs"
   app:tabTextColor="@color/lightPrimary"
   app:tabSelectedTextColor="@color/white"
   style="@style/CustomTabLayout"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"/>
<style name="CustomTabLayout" parent="Widget.Design.TabLayout">
   <item name="tabMaxWidth">20dp</item>
   <item name="tabMode">scrollable</item>
   <item name="tabIndicatorColor">?attr/colorAccent</item>
   <item name="tabIndicatorHeight">2dp</item>
   <item name="tabPaddingStart">12dp</item>
   <item name="tabPaddingEnd">12dp</item>
   <item name="tabBackground">?attr/selectableItemBackground</item>
   <item name="tabTextAppearance">@style/CustomTabTextAppearance</item>
   <item name="tabSelectedTextColor">?android:textColorPrimary</item>
</style>
<style name="CustomTabTextAppearance" parent="TextAppearance.Design.Tab">
   <item name="android:textSize">16sp</item>
   <item name="android:textStyle">bold</item>
   <item name="android:textColor">?android:textColorSecondary</item>
   <item name="textAllCaps">false</item>
</style>

2

Benim için çalışan Kotlin uzantısı:

fun TabLayout.setFont(font: FontUtils.Fonts) {
    val vg = this.getChildAt(0) as ViewGroup
    for (i: Int in 0..vg.childCount) {
        val vgTab = vg.getChildAt(i) as ViewGroup?
        vgTab?.let {
            for (j: Int in 0..vgTab.childCount) {
                val tab = vgTab.getChildAt(j)
                if (tab is TextView) {
                    tab.typeface = FontUtils.getTypeFaceByFont(FontUtils.Fonts.BOLD, context)
                }
            }
        }
    }
}

1

2p'm, Kotlin, referans kontrollü, her yerde uygulanabilir, çünkü bir şeyler yanlış olduğunda durur.

private fun setTabLayouFont(tabLayout: TabLayout) {
    val viewGroupTabLayout = tabLayout.getChildAt(0) as? ViewGroup?
    (0 until (viewGroupTabLayout?.childCount ?: return))
            .map { viewGroupTabLayout.getChildAt(it) as? ViewGroup? }
            .forEach { viewGroupTabItem ->
                (0 until (viewGroupTabItem?.childCount ?: return))
                        .mapNotNull { viewGroupTabItem.getChildAt(it) as? TextView }
                        .forEach { applyDefaultFontToTextView(it) }
            }
}

1

Ve işte benim Kotlin'deki uygulamam, seçilen ve seçilmemiş sekmeler için yazı tipini değiştirmeye de izin veriyor.

class FontTabLayout @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    @AttrRes defStyleAttr: Int = 0
) : TabLayout(context, attrs, defStyleAttr) {

    private var textSize = 14f

    private var defaultSelectedPosition = 0

    private var selectedTypeFace: Typeface? = ResourcesCompat.getFont(context, R.font.muli_bold)
    private var normalTypeFace: Typeface? = ResourcesCompat.getFont(context, R.font.muli_regular)

    @ColorInt private var selectedColor = 0
    @ColorInt private var normalTextColor = 0

    init {
        attrs?.let { initAttrs(it) }
        addOnTabSelectedListener()
    }

    private fun initAttrs(attrs: AttributeSet) {
        val a = context.obtainStyledAttributes(attrs, R.styleable.FontTabLayout)

        textSize = a.getDimensionPixelSize(R.styleable.FontTabLayout_textSize, 14).toFloat()

        defaultSelectedPosition = a.getInteger(R.styleable.FontTabLayout_defaultSelectedPosition, 0)
        val selectedResourceId = a.getResourceId(R.styleable.FontTabLayout_selectedTypeFace, R.font.muli_bold)
        val normalResourceId = a.getResourceId(R.styleable.FontTabLayout_normalTypeFace, R.font.muli_regular)

        selectedColor = a.getColor(com.google.android.material.R.styleable.TabLayout_tabSelectedTextColor, 0)
        normalTextColor = a.getColor(R.styleable.FontTabLayout_normalTextColor, 0)

        selectedTypeFace = ResourcesCompat.getFont(context, selectedResourceId)
        normalTypeFace = ResourcesCompat.getFont(context, normalResourceId)

        a.recycle()
    }

    private fun addOnTabSelectedListener() {
        addOnTabSelectedListener(object : OnTabSelectedListenerAdapter() {

            override fun onTabUnselected(tab: Tab?) {
                getCustomViewFromTab(tab)?.apply {
                    setTextColor(normalTextColor)
                    typeface = normalTypeFace
                }
            }

            override fun onTabSelected(tab: Tab?) {

                getCustomViewFromTab(tab)?.apply {
                    setTextColor(selectedColor)
                    typeface = selectedTypeFace
                }
            }

            private fun getCustomViewFromTab(tab: Tab?) = tab?.customView as? AppCompatTextView

        })
    }

    override fun setupWithViewPager(viewPager: ViewPager?, autoRefresh: Boolean) {
        super.setupWithViewPager(viewPager, autoRefresh)
        addViews(viewPager)
    }

    private fun addViews(viewPager: ViewPager?) {
        for (i in 0 until tabCount) {
            val customTabView = getCustomTabView(i).apply {
                typeface = if (i == defaultSelectedPosition) selectedTypeFace else normalTypeFace
                val color = if (i == defaultSelectedPosition) selectedColor else normalTextColor
                setTextColor(color)
                text = viewPager?.adapter?.getPageTitle(i)
            }

            getTabAt(i)?.customView = customTabView
        }
    }

    private fun getCustomTabView(position: Int): AppCompatTextView {
        return AppCompatTextView(context).apply {
            gravity = Gravity.CENTER
            textSize = this@FontTabLayout.textSize
            text = position.toString()
        }
    }
}

attrs.xml'de:

<declare-styleable name="FontTabLayout">
    <attr name="normalTextColor" format="reference|color" />
    <attr name="textSize" format="dimension" />
    <attr name="defaultSelectedPosition" format="integer" />
    <attr name="selectedTypeFace" format="reference" />
    <attr name="normalTypeFace" format="reference" />
</declare-styleable>

tabs.getTabAt (1) ?. metin ayarlandıktan sonra metni dinamik olarak değiştirmiyor.
shanraisshan

0

Kotlin uzantı işlevleri ile şunu kullanın:

 fun TabLayout.setFontSizeAndColor(typeface: Typeface, @DimenRes textSize: Int, @ColorRes textColor: Int) {
val viewGroup: ViewGroup = this.getChildAt(0) as ViewGroup
val tabsCount: Int = viewGroup.childCount
for (j in 0 until tabsCount) {
    val viewGroupTab: ViewGroup = viewGroup.getChildAt(j) as ViewGroup
    val tabChildCount: Int = viewGroupTab.childCount
    for (i in 0 until tabChildCount) {
        val tabViewChild: View = viewGroupTab.getChildAt(i) as View
        if ( tabViewChild is TextView) {
            tabViewChild.typeface = typeface
            tabViewChild.gravity = Gravity.FILL
            tabViewChild.maxLines = 1
            tabViewChild.setTextSize(TypedValue.COMPLEX_UNIT_PX, this.resources.getDimension(textSize))
            tabViewChild.setTextColor(ContextCompat.getColor(this.context, textColor))
        }
    }
}

}


-2

Değişiklik

if (tabViewChild instanceof TextView) {

için

if (tabViewChild instanceof AppCompatTextView) { 

android.support.design.widget.TabLayout ile çalışmasını sağlamak için (en azından com.android.support:design:23.2.0'dan)


4
ancak AppCompatTextView TextView'ı genişletir, peki bu neden bir fark yaratır?
Shirane85
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.