support last cardview android android-design-library androiddesignsupport

last - TabLayout(Android Design Library) Color de texto



com.android.support:design 26 (8)

A través de atributos XML:

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

Además, hay atributos como tabIndicatorColor o tabIndicatorHeight para un estilo adicional.

En codigo:

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

Dado que esta antigua forma está en desuso a partir de API 23, la alternativa es:

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

Estoy usando el nuevo TabLayout de la biblioteca de diseño de Android. Logré establecer la lista de estado de textcolor usando tabLayout.setTabTextColors(colorstatelist)

¿Cómo puedo lograr lo mismo usando styles.xml?


Aquí hay un código de fragmento para anular el estilo de texto y el color de texto seleccionado

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

Y aquí hay un fragmento de código para el diseño

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


Con el TabLayout provisto en la Biblioteca de Componentes de Materiales puede:

  • Usa un estilo personalizado

<com.google.android.material.tabs.TabLayout style="@style/My_Tablayout" ..>

y en su estilo use el tabTextColor con un selector.

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

  • Use la app:tabTextColor en su diseño:

<com.google.android.material.tabs.TabLayout app:tabTextColor="@color/tab_layout_selector" ..>


Manera fácil y perfecta:

En archivo xml ::

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

En el archivo de valores-estilos:

nota: "cairo_semibold" es una fuente externa, puede reemplazarla por su fuente.

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


Para las pestañas personalizadas, tenemos que anular lo siguiente: 1) aplicación: 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 // para el color de pestaña seleccionado 3) tabIndicatorColor // color para el indicador de pestaña

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


Solo tiene que anular el estilo android:textAppearance . Porque TabLayout usa textAppearance. Aquí está el pequeño fragmento de código de estilo.

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

Y si no desea hacer referencia a su Apptheme , puede especificar directamente a TabLayout usando el fragmento A continuación.

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


Todas las respuestas anteriores son correctas, pero creo que es mejor anular los estilos predeterminados y solo cambiar el elemento específico que desea cambiar. El siguiente ejemplo pondrá el texto en negrita:

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

Entonces..,

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


La mejor manera, corta o simple, es hacer una barra de aplicaciones personalizada como

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