2012-02-04 2 views
27

C'è un modo per utilizzare un tema diverso a seconda della versione di SDK su cui è installata l'applicazione?Tema diverso per le diverse versioni di Android SDK

Il motivo che mi chiedo è perché voglio sostenere tutto il viaggio di ritorno a SDK versione 8, ma per quegli utenti che dispongono di ICS Voglio essere in grado di seguire gli standard di progettazione per ICS e utilizzare il tema Holo.

Vedo da Program different layouts for different versions in android che posso avere una cartella valori-v14 che avrà un theme.xml per sovrascrivere la dichiarazione del tema. Tuttavia, non verrà compilato se faccio riferimento a Theme.Holo. Credo che sia perché ho il seguente nel mio AndroidManifest.xml

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

Qualsiasi suggerimento sarebbe molto apprezzato.

UPDATE: - OK così qui sono i miei file: - AndroidManifest.xml:

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

res/valori/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/valori-v11/themes .xml:

Questo è in conformità con l'articolo che ho letto qui: - http://android-developers.blogspot.com/2012/01/holo-everywhere.html

Quando faccio questo ottengo un errore di compilazione in Eclipse dicendo che: -

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

Puoi pubblicare i tuoi due file theme.xml? – hankystyles

risposta

15

Quello che state facendo (con la cartella valori-V14) è corretta. Hai solo bisogno di cambiare il tuo Target Build per permetterlo di compilare. (fai clic con il pulsante destro del mouse sul tuo progetto, scegli Proprietà, seleziona Android, Scegli Android 14 o successivo)

Assicurati di non utilizzare alcuna funzione superiore a Android: minSdkVersion in quanto causerà una chiusura forzata se utilizzato su una versione precedente di Android.