support last cardview android android-design-library

android - last - Estilo de pestaña TabLayout



com.android.support:design 26 (4)

Leí Cómo diseñar la barra de acciones, el fondo de la pestaña en la pestaña seleccionada y descubro qué hacer. Es un problema realmente similar, pero encontré una solución increíble especialmente para TabLayout :

<android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/tab_layout_color" app:tabIndicatorHeight="48dp" app:tabIndicatorColor="@color/selected_tab_color" />

tenga en cuenta que layout_height y tabIndicatorHeight tienen la misma altura. Entonces obtienes una bonita animación de transición de esta manera.

Uso el nuevo TabLayout de com.android.support:design library. Quiero cambiar el fondo de las pestañas seleccionadas / no seleccionadas. Miro las fuentes y encontré solo el atributo tabBackground que cambia el color de todas las pestañas y no controla el color de la pestaña seleccionada.

¿Cómo puedo controlar el fondo de pestaña seleccionado / no seleccionado?


Si observa la TabLayout.class , notará la pestaña TabView.class interna para el diseño real de la pestaña. Tiene el mismo diseño que cualquier otro con el atributo isSelected . Seleccionar pestaña también tendrá un impacto en esto, por lo que todo lo que necesita hacer es crear un fondo de selector dibujable como

<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true" android:drawable="@color/tab_bg_selected"/> <item android:drawable="@color/tab_bg_unselected"/></selector>

y adjuntarlo al atributo tabBackground, por ejemplo, en XML como

<android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" app:tabBackground="@drawable/tab_bg" app:tabIndicatorHeight="4dp"/>


También conocí este problema. Acabo de buscar tabIndicatorColor en todo el proyecto y encontré el siguiente código en algunos R.java :

@see #TabLayout_tabBackground @see #TabLayout_tabContentStart @see #TabLayout_tabGravity @see #TabLayout_tabIndicatorColor @see #TabLayout_tabIndicatorHeight @see #TabLayout_tabMaxWidth @see #TabLayout_tabMinWidth @see #TabLayout_tabMode @see #TabLayout_tabPadding @see #TabLayout_tabPaddingBottom @see #TabLayout_tabPaddingEnd @see #TabLayout_tabPaddingStart @see #TabLayout_tabPaddingTop @see #TabLayout_tabSelectedTextColor @see #TabLayout_tabTextAppearance @see #TabLayout_tabTextColor

Entonces el problema está resuelto. Que esto te sirva de ayuda.
es decir, uso IDEA


Definir:

<style name="AppTabLayout" parent="Widget.Design.TabLayout"> <item name="tabMaxWidth">@dimen/tab_max_width</item> <item name="tabIndicatorColor">?attr/colorAccent</item> <item name="tabIndicatorHeight">4dp</item> <item name="tabPaddingStart">6dp</item> <item name="tabPaddingEnd">6dp</item> <item name="tabBackground">?attr/selectableItemBackground</item> <item name="tabTextAppearance">@style/AppTabTextAppearance</item> <item name="tabSelectedTextColor">@color/range</item> </style> <!-- for text --> <style name="AppTabTextAppearance" parent="TextAppearance.Design.Tab"> <item name="android:textSize">12sp</item> <item name="android:textColor">@color/orange</item> <item name="textAllCaps">false</item> </style>

Aplicar:

<android.support.design.widget.TabLayout style="@style/AppTabLayout" app:tabTextAppearance="@style/AppTabTextAppearance" android:layout_width="match_parent" .... />