2011-02-01 17 views
20

Estoy preparando mi aplicación para que funcione sin problemas con Honeycomb. Tengo una pequeña pregunta estética con respecto al tema de Android.Cambiar tema según la versión de Android

Para honeycomb se recomienda utilizar el siguiente tema.

android:theme="@android:style/Theme.Holo.Light" 

¿Cómo puedo hacer que mi aplicación utilice otro tema cuando se usa en una versión anterior?

Gracias de antemano

Respuesta

32

EDIT: Actualización de versión de lanzamiento del SDK 3.0.


Una forma de hacer esto es establecer <uses-sdk android:targetSdkVersion="11">. También debe colocar esto encima de su definición <application>. Esto le indicará al sistema que use el tema holográfico si está disponible, y el tema predeterminado de lo contrario.

Otra forma de hacerlo es definir un tema, digamos MyTheme, que hereda de un tema diferente dependiendo del nivel de API/versión del sistema operativo. Puede hacer esto usando resource directory qualifiers.

La estructura de directorios podría tener este aspecto:

res/ 
    values/ 
    styles.xml 
    values-v11/ 
    styles.xml 

El contenido de res/values/styles.xml sería algo así como:

<resources> 
    <style name="MyTheme" parent="@android:style/Theme.Light"> 
    ... 
    </style> 
</resources> 

y el contenido de res/values-v11/styles.xml sería algo así como:

<resources> 
    <style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    ... 
    </style> 
</resources> 

Tenga en cuenta que en el futu Es probable que el tema Holo no siempre tenga sentido por nivel de API, por lo que es posible que necesite modificar este enfoque más adelante. También puede usar otros calificadores de directorio como values-large-v11 o similares. Depende enteramente de ti.

+0

Impresionante, gracias Roman. Tengo curiosidad por lo que quieres decir con "Ten en cuenta que, en el futuro, el tema Holo puede no tener sentido según el nivel API". ¿Quiere decir que el tema Holo puede ser diferente o agregar un nuevo tema en lanzamientos futuros? Por lo tanto, el desarrollador podría necesitar acomodar más temas? Esto hace que sea difícil simplemente hacer algo como usar el tema predeterminado (ya sea Theme o Theme.Holo) con NoTitleBar. De todos modos, gracias por cualquier aclaración; Estoy esperando ICS –

+0

Eso fue un comentario bastante corto de miras :-) Sorprenderlo ahora. Holo definitivamente tiene sentido para API 11+, independientemente del tamaño físico. –

+0

@RomanNurik - No recibo autocompletar para reconocer Holo Light, incluso cuando el objetivo es 11. Solo después de cambiar en project.properties el destino a android-11, el proyecto pudo compilar y el autocompletar trabajó. –

Cuestiones relacionadas