2012-06-15 19 views
13

Tengo una pantalla de inicio de sesión con una marca diferente para las versiones diferentes de mi aplicación. Necesito que la imagen de fondo sea diferente en el archivo de diseño para esta pantalla, por lo que quiero apuntar a un estilo diferente para el contenedor de nivel superior. Estoy un poco perdido en cómo hacer esto.Cómo hacer referencia a un estilo en un tema personalizado

he declarado algo styleable como:

<resources> 

    <declare-styleable name="ThemeBase"> 
     <attr name="loginPageContainerStyle" format="reference" /> 
    </declare-styleable> 

</resources> 

Tengo varios temas diferentes para la aplicación, como por ejemplo:

<resources> 

    <style name="ThemeBase" parent="android:style/Theme.Light" /> 

    <style name="ThemeOne" parent="ThemeBase"> 
     <item name="loginPageContainerStyle">@style/loginPageContainerThemeOne</item> 
    </style> 

    <style name="ThemeTwo" parent="ThemeBase"> 
     <item name="loginPageContainerStyle">@style/loginPageContainerThemeTwo</item> 
    </style> 

</resources> 

Y he definido los siguientes estilos:

<resources> 
    <style name="loginPageContainerThemeOne"> 
     <item name="android:background">@drawable/background_theme_one</item> 
    </style> 

    <style name="loginPageContainerThemeTwo"> 
     <item name="android:background">@drawable/background_theme_two</item> 
    </style> 
</resources> 

Y finalmente un archivo login.xml algo así como:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/loginRoot" 
    style= [ ? WHAT GOES HERE ? ] 
    android:gravity="center_horizontal" 
    android:orientation="horizontal"> 

    [ LAYOUT STUFF ... ] 

</LinearLayout> 

¿Estoy haciendo algo mal? ¿Se puede hacer esto de esta manera?

Respuesta

14

Ok lo he descubierto, la referencia de estilo debe ser:

style="?attr/loginPageContainerStyle" 

pensé que iba a compartir.

+1

Gran ejemplo con temas y estilos de Android. Solo necesito mencionar que en AndroidManifest en la etiqueta de la aplicación necesita agregar android: theme = "@ style/ThemeOne" o android: theme = "@ style/ThemeTwo" y eso es todo lo que necesitamos saber sobre los temas – Ragaisis

+0

Muchas gracias. Exactamente lo que estaba buscando. – dentex

Cuestiones relacionadas