안드로이드 디자인 지원 TabLayout에서 탭 텍스트의 글꼴 변경


109

나는 TabLayout안드로이드 디자인 라이브러리에서 새로운 작업을 시도하고 있습니다.

탭 텍스트를 사용자 지정 글꼴 로 변경하고 싶습니다 . 그리고와 관련된 스타일링을 좀 찾아 보려고 TabLayout했지만 결국 이것으로 끝났습니다 .

탭 텍스트 글꼴을 변경하는 방법을 안내하십시오.


3
사용 Spannable 문자열
— 널 바이트

답변:


37

이와 같은 Java 코드 또는 XML에서 TextView를 만듭니다.

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

사용자 정의 textview를 사용하는 경우 TabLayout이이 ID를 확인하므로 ID를 그대로 유지하십시오.

그런 다음 코드에서이 레이아웃을 확장하고 Typeface해당 텍스트보기 에서 사용자 지정 을 설정 하고이 사용자 지정보기를 탭에 추가합니다.

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
이 상황에서 어떻게 설정 tabTextColor하고 tabSelectedTextColor등록 할 수 있습니까?
— Alireza Noorali

나는의 솔루션을 얻을 프라 빈 샤르마의 대답
— 알리레자 Noorali

162

사용 TabLayout중이고 글꼴을 변경하려면 다음과 같이 이전 솔루션에 새로운 for 루프를 추가해야합니다.

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

셜록을 사용하여 작업 표시 줄 탭에서 글꼴 스타일 변경을 참조하세요.


M 미리보기를 사용하지 않습니다. 그것을 할 다른 방법이 있습니까?
— Dory

1
당신은 M 미리보기 필요하지 않습니다, 그것은 모두 사용 유효TabLayout
— 마리오 벨라스코

그러나 android.view.View android.support.design.widget.TabLayout.getChildAt (int)에서 NullPointerException이 발생합니다. 해결 방법을 도와 주시겠습니까? 내 코드에서 내가 누락 된 것을 찾을 수 없습니다.
— brettbrdls

1
의 첫 번째 매개 변수는 setTypeFace입니다 TypeFace당신이 찾을 수없는 경우 경우에, Font(나를 위해 존재 표시되지 않습니다) 클래스
— 바히드 아미리

104

자신 만의 스타일을 만들고 부모 스타일을 parent="@android:style/TextAppearance.Widget.TabWidget"

그리고 탭 레이아웃에서이 스타일을 app:tabTextAppearance="@style/tab_text"

예 : 스타일 :

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

예 : 탭 레이아웃 구성 요소 :

<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
이것은 맞습니다 parent="TextAppearance.Design.Tab". 제 경우에 사용 하고 있습니다.
— Javatar

1
이 첫 번째 응답보다 훨씬 더 작동하고, 미래에 뭔가를 깰 수있는 마술 (숨겨진 API)없이
— Sulfkain

2
바로 작업 할 때 사용의 font,하지 작업 할 때 사용하는 글꼴 경로
— 트램 응우 엔

2
사용할 때 이상한 예외가 비정상적으로 발생했습니다 TextAppearance.Widget.TabWidget. @Javatar의 대답이 나를 위해 수정했습니다.
— funct7

47

praveen Sharma의 훌륭한 답변입니다. 약간의 추가 : changeTabsFont()필요한 모든 곳 에서 사용하는 대신 TabLayout자신 만의 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);
            }
        }
    }

}

그리고 하나 더. TabViewA는 LinearLayout로 TextView내부 (또한 선택적으로 포함 할 수있다 ImageView). 따라서 코드를 더 간단하게 만들 수 있습니다.

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

하지만이 방법은 권장하지 않습니다. 경우 TabLayout구현이 변경됩니다,이 코드가 제대로 작동하지 않거나 충돌 할 수 있습니다.

사용자 정의하는 또 다른 방법은 사용자 TabLayout정의보기를 추가하는 것입니다. 여기에 좋은 예가 있습니다.


다음과 같이 탭을 설정하는 경우 addTab이 호출되지 않습니다. mViewPager.setAdapter (new YourPagerAdapter (getChildFragmentManager ())); mTabLayout.setupWithViewPager (mViewPager);
— Penzzz

2
@Penzzz 당신이 절대적으로 옳습니다. 이 경우 addTab 메서드에서 다른 메서드로 코드를 이동해야합니다. 예를 들어 onMeasure.
— Andrei Aulaska

@AndreiAulaska thnx 당신은 내 하루를 저장합니다. 당신의 마지막 링크는 나를 구합니다.
— Amol Dale

이것은 최신 버전에서 더 이상 작동하지 않습니다. @ejw의 대답이 이제 작동합니다. addTab (Tab tab, boolean setSelected)에 추가해야합니다
— Sayem

3
이것은 잘 작동합니다. 참고 : 지원 라이브러리 25.x의, 당신은 오버라이드 (override) 할 필요가 addTab(Tab tab, int position, boolean setSelected)대신 addTab(Tab tab).
— Vicky Chijwani

20

(API 레벨 16) 이상을 XML실행하는 장치 에서 기능에서 글꼴 지원을 Android 4.1사용하려면 지원 라이브러리 26 이상을 사용하십시오.

  1. res 폴더를 마우스 오른쪽 버튼으로 클릭
  2. 새로 만들기-> Android 리소스 디렉토리-> 글꼴 선택-> 확인
  3. myfont.ttf새로 만든 글꼴 폴더에 파일을 넣으십시오.

에 res/values/styles.xml추가 :

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

레이아웃 파일에서 app : 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" />

[fonts in xml]을 참조하세요 . ( https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml )


그것은 자 마린 양식과 android.thanks 자 마린 작동
— 에스 마일 Jamshidiasl

좋은 대답입니다! 하지만 "TextAppearance.Design.Tab"을 확장해야합니다
— XY

16

다음 방법은 전체 글꼴을 ViewGroup재귀 적으로 변경 합니다. 의 내부 구조에 신경 쓸 필요가 없기 때문에이 방법을 선택했습니다 TabLayout. 내가 사용하고 서예 글꼴을 설정하는 라이브러리를.

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
이 문제는 레이아웃을 Viewpager에 연결하면 사용자 정의 된 글꼴이 손실된다는 것입니다.
— rupps

10

디자인 지원 23.2.0의 경우 setupWithViewPager를 사용하여 코드를 addTab (Tab tab)에서 addTab (Tab tab, boolean setSelected)로 이동해야합니다.


8

당신은 이것을 사용할 수 있습니다, 그것은 나를 위해 작동합니다.

 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에서 간단하다는 것을 알았습니다. @ejw가 제안한대로 addTab (@NonNull Tab tab, boolean setSelected)를 재정의하면됩니다.

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

그리고 여기에 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" />

도움이 되길 바랍니다 :)


1
그러나 tabSelectedTextColor 및 tabTextColo를 설정하는 방법은 무엇입니까?
— Mostafa Imran 2016 년

버전 @MostafaImran android:textColor="@color/graylove"state_selected 색상이의 상태 목록 선택을해야 지정
— AA_PV

7

으로 안드레이는 대답 당신은 확장하여 fontface을 변경할 수 있습니다 TabLayout의 클래스를. 그리고 Penzzz가 말했듯이 addTab 메소드 에서는 할 수 없습니다 . onLayout 메서드를 다음과 같이 재정의합니다 .

@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 메서드를 덮어 써야합니다. setupWithViewPager 메서드를 사용 하여 TabLayout을 ViewPager와 바인딩 할 때 setText 메서드 또는 PagerAdapter에서 탭 텍스트를 설정해야하고이 경우 부모 ViewGroup ( (TextView 텍스트를 변경하면 부모의 onLayout 메서드가 호출 됨-tabView에는 두 개의 자식이 있고 하나는 ImageView이고 다른 하나는 TextView입니다)

또 다른 해결책 :

먼저 다음 코드 줄 :

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

위의 솔루션에서 두 개의 루프 외부에 작성해야합니다.

그러나 API> = 16에 대한 더 나은 솔루션 은 android : fontFamily를 사용하는 것입니다 .

크리에이트 안드로이드 자원 디렉토리 라는 이름의 글꼴 및 디렉토리에 원하는 글꼴을 복사합니다.

그런 다음 다음 스타일을 사용하십시오.

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

이것은 나쁜 성능 수정으로, onLayout()탭 전환이나 탭 아래의 목록 스크롤과 같은 모든 레이아웃 변경으로 호출되었으며 for많은 탭 TabLayout앱 에서 중첩 된 s 가 지연됩니다.
— Amr Barakat

2
@Amr Barakat. 이 링크에 따르면 : developer.android.com/reference/android/view/… , int, int, int, int), 이것은 사실이 아닙니다. 나도 테스트했습니다. onLayout 메서드에 중단 점을 넣었고 탭 전환이나 목록 스크롤이 아닌 탭이 생성 될 때 호출됩니다.
— Arash

1
나를 onLayout()위해 탭 전환시 여러 번 호출되지만 (정확히 이유는 확실하지 않음)이 사실을 설명하기 위해 글꼴을 설정했습니다 boolean changed. 이렇게하면 글꼴을 여러 번 설정하는 것을 방지 할 수 있습니다.
— Robert

좋은 솔루션은 어떤 코드가 필요하지 만 XML 속성
— careful7j

3

My Resolve 메서드는 이와 같이 지정된 탭 텍스트를 변경하고,

 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

나를 위해 일한 Kotlin 확장 프로그램 :

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, 참조 확인 기능이있는 Kotlin, 문제가 발생하면 중지되므로 모든 곳에 적용 가능합니다.

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

그리고 여기에 선택된 탭과 선택되지 않은 탭의 글꼴 변경을 허용하는 Kotlin의 구현이 있습니다.

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에서 :

<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) ?. text가 설정되면 텍스트를 동적으로 변경하지 않습니다.
— shanraisshan

0

kotlin 확장 기능으로 다음을 사용하십시오.

 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

변화

if (tabViewChild instanceof TextView) {

...에 대한

if (tabViewChild instanceof AppCompatTextView) { 

android.support.design.widget.TabLayout (적어도 com.android.support:design:23.2.0에서)


4
하지만 AppCompatTextView는 TextView를 확장하는데 왜 이것이 차이를 만들까요?
— Shirane85
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.