2015-07-08 15 views
18

Sto sviluppando un'applicazione per Android versione 4.0 e successive. Ho appena aggiornato a appcompat 22.2.0 ma vedo tutti questi riferimenti a ...- v21/v22.xml sul web. Per cosa sono usati? Fanno la differenza? Grazie in anticipo!Qual è l'uso di un ...- v21.xml?

+2

Intendi valori v21? values-v21 contiene risorse da applicare su Android api 21 e versioni successive. – krystian71115

+0

Esempio: Barra delle azioni viene aggiunta in api 11. Per mostrare la barra delle azioni è possibile impostare un altro stile nei valori-v11. – krystian71115

+0

Ad esempio, ho avuto questo themes.xml nella cartella values-v21 seguendo un tutorial: http://pastebin.com/g0GrFyQT. Non sono sicuro se ne ho davvero bisogno o no: S – Jdruwe

risposta

43

ho avuto questa themes.xml nella cartella valori-V21

Una directory res/values-v21/ contiene le risorse che verrà utilizzato quando il dispositivo che esegue la vostra applicazione è il livello di API 21 o superiore. Se il dispositivo è in esecuzione su una versione precedente di Android, la directory res/values-v21/ verrà ignorata.

Per cosa vengono utilizzati? Fanno la differenza?

Sono utilizzati per fornire versioni diverse di risorse per diverse versioni di Android.

Nel caso di un file themes.xml, un dispositivo Livello 21+ API potrebbe avere un tema che eredita da Theme.Material. Tuttavia, quel tema non esiste sui dispositivi più vecchi. Se hai un tema in res/values/ che tenta di fare riferimento a Theme.Material, la tua app si bloccherà su quei dispositivi meno recenti. Così, invece, si mette un tema in res/values/ che funziona su tutti i dispositivi che si stanno sostenendo (per esempio, per un Theme.HolominSdkVersion di 11 o superiore), e di override quel tema in res/values-v21/ da usare al posto Theme.Material.

Si può vedere che in this sample app, dove Theme.Apptheme (tema di mia app) eredita da Theme.Holo in res/values/ e eredita da Theme.Material in res/values-v21/. Quale versione di Theme.Apptheme viene utilizzata in fase di esecuzione dipende dalla versione di Android del dispositivo.

+0

Questa spiegazione ha molto senso, grazie. Nella mia app faccio riferimento a uno stile che ha "Theme.AppCompat.Light" come genitore, questo significa che appcomputer si prenderà cura di questa compatibilità con le versioni precedenti in modo da non dover creare un xml in una cartella values-v21 ? – Jdruwe

+2

@Jdruwe: 'Theme.AppCompat' ei suoi figli (ad esempio,' Theme.AppCompat.Light') funzionano all'API Level 7 e 'appcompat-v7' gestisce tutto il lavoro di retrocompatibilità relativo a quel tema. – CommonsWare

+0

@Jdruwe No non è necessario. Puoi creare xml nella cartella dei valori (non nei valori-v21) – krystian71115

Problemi correlati