TabLayout (Android Tasarım Kitaplığı) Metin Rengi


Yanıtlar:


256

XML nitelikleri aracılığıyla:

<android.support.design.widget.TabLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabMode="fixed"
        app:tabGravity="fill"
        app:tabTextColor="@color/your_unselected_text_color"
        app:tabSelectedTextColor="@color/your_selected_text_color"/>

Ek olarak, daha fazla stil için tabIndicatorColor veya tabIndicatorHeight gibi öznitelikler vardır.

Kodda:

tabLayout.setTabTextColors(
    getResources().getColor(R.color.your_unselected_text_color),
    getResources().getColor(R.color.your_selected_text_color)
);

Bu eski yöntem API 23 itibariyle kullanımdan kaldırıldığından, alternatif şudur:

tabLayout.setTabTextColors(
    ContextCompat.getColor(context, R.color.your_unselected_text_color),
    ContextCompat.getColor(context, R.color.your_selected_text_color)
);

@Fe Le ya pragmatik bir şekilde değiştirmek istersem?
PriyankaChauhan

@pcpriyanka bahşiş için teşekkürler, cevabımı kodda seçilen ve seçilmemiş rengi tanımlamanın kolay bir yolu ile güncelledim.
Fe Le

81

Metin stilini ve seçilen metin rengini geçersiz kılmak için pasaj kodu aşağıda verilmiştir.

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
    <item name="tabTextAppearance">@style/MyCustomTabText</item>
    <item name="tabSelectedTextColor">@color/tab_text_act</item>
</style>

<style name="MyCustomTabText" parent="TextAppearance.AppCompat.Button">
    <item name="android:textSize">14sp</item>
    <item name="android:textColor">@color/tab_text</item>
</style>

Ve işte düzen için pasaj kodu

<android.support.design.widget.TabLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/MyCustomTabLayout" />

1
Teşekkürler - bu benim için çalışıyor. TabSelectedTextColor öğesinin, sekme altındaki satırın rengi ve sekmeyi seçtiğimde sekmenin metni olduğunu belirtmek gibi.
Simon

Widget.Design.TabLayout'u neden devralıyorsunuz?
SpaceMonkey

1
neden TabLayout'ta "stil" kullanmalıyız? "Android: theme" kullanıyorsam neden çalışmıyor?
SpaceMonkey

@Spacemonkey çünkü Widget.Design.TabLayout "tabIndicatorColor", "tabIndicatorHeight" gibi sekmeler için temel stiller içeriyor
sweetrenard

@sweetrenard oh, yani "android: theme" de belirttiğim temayı geçersiz kılıyor?
SpaceMonkey

5

Yukarıdaki tüm cevaplar doğru ancak sadece varsayılan stilleri geçersiz kılmanın ve sadece değiştirmek istediğiniz belirli öğeyi değiştirmenin daha iyi olduğunu düşünüyorum. Aşağıdaki örnek, metni kalın hale getirecektir:

<style name="Widget.TabItem" parent="TextAppearance.Design.Tab">
    <item name="android:textStyle">bold</item>
</style>

Sonra..,

app:tabTextAppearance="@style/Widget.TabItem"

Üzgünüm ama bu yolu nerede buldunuz?
deadfish

4

Sadece android:textAppearancestili geçersiz kılmalısın. Çünkü TabLayout textAppearance kullanır. işte küçük pasaj stil kodu.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Below will reference with our custom style -->
    <item name="android:textAppearance">@style/my_tab_text</item>
</style>

<style name="my_tab_text" parent="Base.TextAppearance.AppCompat">
    <item name="android:textColor">@android:color/holo_blue_dark</item>
</style>

Ve Apptheme'nizden referans almak istemiyorsanız, Below snippet'i kullanarak doğrudan TabLayout'u belirtebilirsiniz.

 <android.support.design.widget.TabLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:tabTextAppearance="@style/my_tab_text"
            app:tabIndicatorHeight="48dp"/>

ebeveyn olarak
AppCompact

tamam haklısın, işe yarıyor. ancak yalnızca "seçilmemiş" sekmesi için. seçilen sekme metni benim için her zaman siyah
sebastian

Tamam, tasarım kitaplığında, tasarım destek kitaplığında seçili sekmenin bir textColor'unu atamak için kullanılabilecek bir kod yok. Bu nedenle, seçilen sekme metin rengi için özelliği kullanarak ayarlamanız gerekir.
Moinkhan

1

Özel sekmeler için aşağıdakileri geçersiz kılmalıyız: 1) app: tabTextColor // for_unselected_text "

        <android.support.design.widget.TabLayout
            android:id="@+id/tabs"
            style="@style/MyCustomTabLayout"
            android:layout_width="match_parent"
            android:layout_height="56dp"
            android:background="?attr/colorPrimary"
            android:scrollbarSize="24sp"
            android:visibility="gone"
            app:tabTextColor="@color/white_40_percent"
            app:tabMode="scrollable" />

2) tabSelectedTextColor // seçilen sekme rengi için 3) tabIndicatorColor // sekme göstergesi için renk

   <style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
    <item name="android:textColorPrimary">@color/white</item>
    <item name="tabSelectedTextColor">@color/white</item>
    <item name="tabTextAppearance">@style/TabTextStyle</item>
    <item name="tabIndicatorColor">?attr/colorAccent</item>
    <item name="tabIndicatorHeight">4dp</item>
    <item name="android:tabStripEnabled">true</item>
    <item name="android:padding">0dp</item>
  </style>



<style name="TabTextStyle">
    <item name="android:fontFamily">@string/font_fontFamily_medium</item>
    <item name="android:textStyle">bold</item>
    <item name="android:textAllCaps">true</item>
    <item name="android:textColor">@color/tab_text_color</item>
    <item name="android:textSize">16sp</item>
</style>

tab_text_color.xml

 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="@color/white_40_percent"android:state_selected="false"/>
  <item android:color="@color/white_100_percent"android:state_selected="true"/>
 </selector>

1

İle TabLayoutsağlanan Malzeme Bileşenleri Kütüphanesi yapabilirsiniz:

  • Özel bir stil kullanın
  <com.google.android.material.tabs.TabLayout
      style="@style/My_Tablayout"
      ..>

ve kendi tarzınızda tabTextColorbir seçici ile kullanın .

<!-- TabLayout -->
<style name="My_Tablayout" parent="Widget.MaterialComponents.TabLayout" >
    <item name="tabTextColor">@color/tab_layout_selector</item>
</style>


<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:color="?attr/colorPrimary" android:state_selected="true"/>
  <item android:alpha="0.60" android:color="?attr/colorOnSurface"/>
</selector>
  • app:tabTextColorDüzeninizde şunu kullanın :
  <com.google.android.material.tabs.TabLayout
      app:tabTextColor="@color/tab_layout_selector"
      ..>

görüntü açıklamasını buraya girin


0

Kolay ve Mükemmel yol:

Xml dosyasında ::

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

Değer stilleri dosyasında:

not: "cairo_semibold" harici bir yazı tipidir, yazı tipinizle değiştirebilirsiniz.

<style name="TabText" parent="TextAppearance.Design.Tab">
    <item name="android:textColor">#1f57ff</item>
    <item name="android:textSize">14sp</item>
    <item name="android:fontFamily">@font/cairo_semibold</item>
</style>

0

en iyi veya kısa ve basit yol,

 <?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:background="@color/colorAccent"
    app:theme="@style/myCustomAppBarTheme"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"><RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <ImageButton
            android:id="@+id/btn_back"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:background="@android:color/transparent"
            android:src="@mipmap/ic_launcher" />

        <TextView
            android:id="@+id/txt_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="16dp"
            android:layout_marginStart="16dp"
            android:layout_toEndOf="@+id/btn_back"
            android:layout_toRightOf="@+id/btn_back"
            android:text="Title"
            android:textColor="@android:color/white"
            android:textSize="20sp"
            android:textStyle="bold" />

    </RelativeLayout>
    </android.support.v7.widget.Toolbar>

0

XML nitelikleri

<com.google.android.material.tabs.TabLayout
                    android:id="@+id/tab_layout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:tabIndicatorColor="@color/white"
                    app:tabBackground="@color/colorAccent"
                    app:tabSelectedTextColor="@color/white"
                    app:tabTextColor="@color/white"
                    app:tabMode="scrollable" />

Kotlin'de programlı olarak

(tab_layout as TabLayout).setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorPrimary))
(tab_layout as TabLayout).setSelectedTabIndicatorColor(ContextCompat.getColor(mContext, R.color.white))
(tab_layout as TabLayout).setTabTextColors(ContextCompat.getColor(mContext, R.color.white),
                ContextCompat.getColor(mContext, R.color.white))
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.