2012-02-04 53 views
27

¿Hay alguna manera de usar un tema diferente según la versión de SDK en la que está instalada la aplicación?Tema diferente para las diferentes versiones de Android SDK

La razón por la que pregunto es porque quiero respaldar todo el camino de vuelta a la versión 8 de SDK, pero para aquellos usuarios que tienen ICS quiero poder seguir los estándares de diseño para ICS y usar el tema Holo.

Puedo ver desde Program different layouts for different versions in android que puedo tener una carpeta values-v14 que tendrá un theme.xml para anular la declaración del tema. Sin embargo, no se compilará si hago referencia a Theme.Holo. Creo que esto es porque tengo el siguiente en mis AndroidManifest.xml

<uses-sdk android:minSdkVersion="8" /> 
<uses-sdk android:targetSdkVersion="11"/> 

Cualquier punteros sería muy apreciada.

ACTUALIZACIÓN: - bien, así que aquí están mis archivos: - AndroidManifest.xml:

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:name=".Refunder" 
    android:theme="@style/MainTheme" 
    > 

res/valores/themes.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MainTheme" parent="@android:style/Theme.Light.NoTitleBar"> 
     <item name="android:typeface">normal</item> 
     <item name="android:textSize">15sp</item> 
    </style> 
</resources> 

res/valores-v11/temas .xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="MainTheme" parent="@android:style/Theme.Holo"> 
     <item name="android:typeface">normal</item> 
     <item name="android:textSize">15sp</item> 
    </style> 
</resources> 

Esto está de acuerdo con el artículo que leí aquí: - http://android-developers.blogspot.com/2012/01/holo-everywhere.html

Cuando hago esto me sale un error de compilación en Eclipse diciendo que: -

error: Error retrieving parent for item: No resource found that matches the given name '@android:style/Theme.Holo' 
+0

¿Puedes publicar tus dos archivos theme.xml? – hankystyles

Respuesta

15

Lo que está haciendo (con su carpeta de valores-v14) es correcta. Solo necesita cambiar su objetivo de compilación para permitir su compilación. (haga clic derecho en su proyecto, elija propiedades, seleccione Android, elija Android 14 o superior)

Asegúrese de no utilizar ninguna función mayor que su Android: minSdkVersion, ya que provocará un cierre forzado si se utiliza en una versión anterior de Androide.

Cuestiones relacionadas