2012-10-13 82 views
8

Estoy usando la biblioteca ViewpagerIndicator de Jake Wharton. Estoy usando el código de pestañas junto con la biblioteca ActionBarSherlock. Todo funciona bien, pero estoy tratando de estilizar el fondo de las pestañas y no puedo entender cómo. Me gustaría una barra de acción oscura con pestañas oscuras y fragmentos de luz (contenido de pestañas).¿Cómo cambiar el fondo de la pestaña en las pestañas del indicador viewpager?

El tema base que estoy usando es Theme.Sherlock.Light.DarkActionBar. Extiendo este estilo haciéndolo el padre de un estilo que establece atributos para las pestañas (como el color del texto, el color del indicador, etc.). Esto da como resultado barras de acción oscuras, pestañas claras y fragmentos de luz.

No encuentro nada que cambie el fondo de las pestañas. La única forma en que puedo cambiarlo es cambiando toda la aplicación a oscura (usando Theme.Sherlock). Aquí está mi código hasta ahora:

<style name="vpiTheme" parent="Theme.Sherlock.Light.DarkActionBar"> 
    <item name="vpiTabPageIndicatorStyle">@style/CustomTabPageIndicator</item> 
</style> 

<style name="CustomTabPageIndicator" parent="Widget.TabPageIndicator"> 
    <item name="android:textColor">#FF000000</item> 
    <item name="android:paddingTop">6dp</item> 
    <item name="android:paddingBottom">6dp</item> 
    <item name="android:paddingLeft">16dip</item> 
    <item name="android:paddingRight">16dip</item> 
    <item name="android:maxLines">2</item> 
</style> 

Respuesta

0

primero Añadir un dibujable a su proyecto, el de abajo se llama tab_indicator.xml:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/black" /> 
<item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@android:color/white" /> 
<item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@android:color/black" /> 
<item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@android:color/white" /> 
</selector> 

después hacer referencia a su estirable en su estilo:

<item name="android:background">@drawable/tab_indicator</item> 

Esto hará que la pestaña activa tenga un fondo blanco y las otras negras.

+0

Esto reemplazaría los indicadores de colores ¿no? – Flyview

+0

Sí, eso es correcto. Había olvidado que mi objetivo era eliminar el indicador. Las respuestas aquí http://stackoverflow.com/questions/10364045/actionbarsherlock-actionbar-custom-background-with-divider deben ser aplicables, ya que el indicador/fondo predeterminado se realiza con una imagen de 9 parches. – grant

7

Desde los dibujables 9-patch son en su mayoría transparente, el color de las pestañas puede cambiarse simplemente añadiendo un color de fondo a todo el ViewPagerIndicator, así:

<com.viewpagerindicator.TabPageIndicator 
    android:id="@+id/indicator" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:background="#333333" /> 

esta manera se puede seguir usando una tema basado en Theme.Sherlock.Light.DarkActionBar, y no es necesario crear nuevos objetos dibujables.

Cuestiones relacionadas