2013-01-15 11 views
6

MinSDKVersion = 7 TargetSDKVersion = 17Android: come utilizzare temi diversi per le diverse versioni di Android?

Se l'utente ha SDKVersion 11 o superiore mi piace impostare il tema per Theme.Holo.Light. Non funziona per me qui. Quando lancio l'applicazione su un dispositivo 3.1 che utilizza solo il Theme.Light:

enter image description here

Lo stesso quando faccio funzionare questa applicazione su un dispositivo con la versione inferiore a 3.1

mio Folderstructure:

enter image description here

manifesto:

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyTheme" > 

valori-v11:

<resources> 

<!-- 
    Base application theme, dependent on API level. This theme is replaced 
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 
--> 
<style name="AppBaseTheme" parent="@android:style/Theme.Light"> 
    <!-- 
     Theme customizations available in newer API levels can go in 
     res/values-vXX/styles.xml, while customizations related to 
     backward-compatibility can go here. 
    --> 
</style> 

<!-- Application theme. --> 
<style name="AppTheme" parent="@android:style/Theme.Light"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
</style> 


<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    <!-- Any customizations for your app running on devices with Theme.Holo here --> 
</style> 

altri valori cartelle:

<resources> 

<!-- 
    Base application theme, dependent on API level. This theme is replaced 
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 
--> 
<style name="AppBaseTheme" parent="@android:style/Theme.Light"> 
    <!-- 
     Theme customizations available in newer API levels can go in 
     res/values-vXX/styles.xml, while customizations related to 
     backward-compatibility can go here. 
    --> 
</style> 

<!-- Application theme. --> 
<style name="AppTheme" parent="@android:style/Theme.Light"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
</style> 

    <style name="MyTheme" parent="@android:style/Theme.Light"> 
    <!-- Any customizations for your app running on devices with Theme.Holo here --> 
</style> 

Come posso usare questo correttamente?

Sinceramente Marco Seiz

risposta

6

Perché hai il tema due volte nel file styles.xml?

<style name="AppTheme" parent="@android:style/Theme.Light"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
</style> 


<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    <!-- Any customizations for your app running on devices with Theme.Holo here --> 
</style> 

Cancellare quello che non è necessario (in questo caso il tema Theme.Light):

valori-v11:

<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    <!-- Any customizations for your app running on devices with Theme.Holo here --> 
</style> 

valori:

<style name="MyTheme" parent="@android:style/Theme.Light"> 
    <!-- Any customizations for your app running on devices with Theme.Holo here --> 
</style> 

+0

ho fatto ma ancora mostrato il tema vecchio e non il tema Holo sul mio Android 4.1 e 3.1 dispositivo –

+0

hai cancellato le duplicazioni? – Ahmad

+0

Sì, l'ho fatto. Ho capito l'errore. Ho dovuto creare due cartelle per una lingua. Per il tedesco: values-de AND values-de-v11 e lo stesso per l'inglese ... Funziona ora :) Grazie per i vostri consigli e aiuti! –

2

Posizionare la soluzione fornita da @Ahmad in nuovi file chiamato themes.xml sulle directory che ha detto :-)

Se userete multilingua e multithemes, si può dare un'occhiata a una domanda simile I ha fatto qualche minuto prima ... e si sono risposto:

Multilanguage and multitheme at same time