Cambiar el pie de página TabPageIndicator y los colores de texto (ViewPagerIndicator)

Esto me está volviendo loco: no puedo por la vida de mí entender cómo cambiar el pie de página y los colores de texto de mi TabPageIndicator (ViewPagerIndicator de Jake Wharton). Miré el código fuente para la muestra ViewPagerIndicator app y no puedo encontrar donde el código difiere para el "Default" y el "estilo" muestras. El valor predeterminado tiene el pie de página azul predeterminado y el texto blanco, mientras que el ejemplo Styled tiene un pie de página rojo y utiliza una fuente gris.

Sé que es posible, pero no puedo averiguar cómo hacerlo! Cualquier ayuda es tremendamente apreciada. 🙂

Sí, es diferente de la definición de manifiesto para el tema:

Para la pestaña predeterminada:

<activity android:name=".SampleTabsDefault" android:label="Tabs/Default" android:theme="@style/Theme.PageIndicatorDefaults"> 

Y la pestaña de estilo:

 <activity android:name=".SampleTabsStyled" android:label="Tabs/Styled" android:theme="@style/StyledIndicators"> 

Creo que la respuesta correcta es añadir el estilo siguiente a su archivo style.xml (esto contiene elementos que le dicen a VPI cómo mostrarlo). Algo como esto:

 <style name="Widget.MyTitlepageIndicator"> <item name="footerColor">#ff99cc33</item> <item name="footerIndicatorStyle">underline</item> <item name="footerIndicatorHeight">3dp</item> <item name="footerLineHeight">1.5dp</item> <item name="footerPadding">6dp</item> <item name="selectedColor">#ffffffff</item> </style> 

A continuación, en el archivo layout.xml, donde define su VPI, simplemente dígalo sobre el estilo que creó, de la siguiente manera:

 <com.viewpagerindicator.TitlePageIndicator android:id="@+id/history_vp_ind" android:layout_width="fill_parent" android:layout_height="wrap_content" style="@style/Widget.MyTitlepageIndicator" /> 

Para hacerlo programáticamente, modifique el TabPageIndicator y agregue el método siguiente:

 public void setTextColor(int color) { for (int i = 0; i < mTabLayout.getChildCount(); i++) { View child = mTabLayout.getChildAt(i); if (child instanceof TextView) ((TextView) child).setTextColor(color); } } 

A continuación, utilice el método para cambiar el color de texto de las vistas en el indicador. Por ejemplo

 setTextColor(0xFFFFFFFF) 

Sería blanco.

Puede cambiar el fondo predeterminado de TabPageIndicator de 2 maneras

1. puede cambiar el fondo en el XML

 <com.viewpagerindicator.TabPageIndicator android:id="@+id/container" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#0c445c" /> 

2. Reemplace el constructor en la clase TabPageIndicator.java en la biblioteca viewpager

 public TabPageIndicator(Context context, AttributeSet attrs) { super(context, attrs); setHorizontalScrollBarEnabled(false); mTabLayout = new IcsLinearLayout(context, R.attr.vpiTabPageIndicatorStyle); mTabLayout.setBackgroundColor(Color.parseColor("#0c445c")); addView(mTabLayout, new ViewGroup.LayoutParams(WRAP_CONTENT, MATCH_PARENT)); } 

Espero que esto ayude

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.