2012-04-16 11 views
7

Esto me está volviendo loco: no puedo imaginar cómo cambiar el pie de página y los colores de texto de mi TabPageIndicator (del ViewPagerIndicator de Jake Wharton). Miré el código fuente de la aplicación ViewPagerIndicator de muestra y no puedo encontrar dónde difiere el código para las muestras "Predeterminado" y "Diseñado". El valor predeterminado tiene el pie de página azul predeterminado y el texto blanco, mientras que el ejemplo con estilo tiene un pie de página rojo y usa una fuente gris.Cambiar el pie de página de TabPageIndicator y los colores del texto (ViewPagerIndicator)

Sé que es posible, pero no sé cómo hacerlo. Cualquier ayuda es tremendamente apreciada. :)

+0

puede darnos el enlace del código fuente de la aplicación ViewPagerIndicator muestra? –

+0

@haythemsouissi: aquí está: https://github.com/JakeWharton/Android-ViewPagerIndicator – anticafe

Respuesta

4

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

Para pestaña predeterminada:

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

Y pestaña de estilo:

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

Bueno, supongo que no me fijé lo suficiente en la muestra. Parece que la forma en que cambió el color del pie de página fue para proporcionar diferentes imágenes extraíbles para usar como pie de página. Esperaba que fuera tan simple como agregar una línea de XML, pero aparentemente tendré que abrir Photoshop y rehacer las fichas usando mi propio color. Demasiado; Desearía que él (Jake Wharton) lo hiciera usar colores en lugar de imágenes. Gracias por tu ayuda de todos modos. – mightimaus

+0

¿Cómo cambiar el color del texto? – Dhasneem

+0

@ EverythingTech96 oye cómo te las arreglas para cambiar las imágenes dibujables donde se encuentran ... por favor, guíame .. me está haciendo enojar .. todo lo que he encontrado es vpiTabPageIndicatorStyle ..: S – baboo

3

Creo que la respuesta correcta es añadir el siguiente estilo para su archivo style.xml (este 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 se define el VPI, que acaba de decir que sobre el estilo que ha creado, como esto:

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

Su ejemplo pertenece a 'TitlePageIndicator' mientras que la pregunta original se refería a' TabPageIndicator'. –

0

Para hacerlo mediante programación , modificar el TabPageIndicator y añadir el siguiente método:

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

Entonces sólo tiene que utilizar el método para cambiar el color del texto de las vistas en el indicador. Por ejemplo,

setTextColor(0xFFFFFFFF) 

sería blanco.

0

puede cambiar el fondo por defecto 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. Reemplazar el constructor de TabPageIndicator.java clase 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 esta ayuda

Cuestiones relacionadas