41 votes

Comment utiliser le thème par défaut de l'appareil pour l'application?

J'ai une application que je souhaite développer pour Android 2.1, 2.2, 2.3.3, 3.0/3.1 et 4.0.x. Entre ces API niveaux, il y a environ 3 différents types de Thèmes. La dernière 4.0.x thème Holo.

De toute façon, je veux que mon application pour utiliser la valeur par défaut d'Android thème pour tous les périphériques que c'est sur. Si c'est sur un 4.0.x l'appareil, je le veux utiliser Holo. Si c'est sur 2.3.3 je veux qu'il à utiliser le thème de cette version d'Android. etc...

Est-il un moyen simple de cette approche? J'ai remarqué qu'avec la 4.0, ils ont ajouté Theme.DeviceDefault thème que vous pouvez utiliser, mais cela ne m'aide pas pour les anciennes API niveaux. Quelle est la meilleure approche?

69voto

zapl Points 18808

Quelle est la meilleure approche?

Edit: en spécifiant aucun thème ne sera pas toujours le résultat dans l'appareil thème par défaut.

Il y a actuellement 2, voire 3 Thèmes (.Light etc non inclus)

  • Theme est le thème par défaut d'Android jusqu'à 2,3, tout change entre inclus
  • Theme.Holo est le nouveau thème par défaut d'Android Honeycomb et au-dessus
  • Theme.DeviceDefault est le thème que le fabricant de l'appareil par défaut pour les appareils fonctionnant sous ICS et au-dessus. Ce thème peut être personnalisé (je ne sais pas du tout thème existant - si c'est le genre de 2 thèmes uniquement). Mais ces dispositifs doivent inclure Theme.Holo.

Supposons que vous voulez créer une application qui fonctionne sur les appareils de 2,1 à 4.0.3 en utilisant le thème par défaut (vieux - Theme 2.1 - 2.3, Theme.Holo sur 3.0+)

Si vous définissez pas de Thème à tous, alors, par défaut, vous obtenez Theme sur tous les appareils , sauf si vous déclarez que votre application est explicitement compatible avec Nid d'abeille ou au-dessus.

Pour ce faire, vous devez définir le android:targetSdkVersion="11" (ou plus) dans votre manifeste.

En fonction de votre targetSdkVersion sur un dispositif ICS, vous bénéficiez de:

Pour des valeurs inférieures à 11, @android:style/Thème; entre 11 et 13 @android:style/Thème.Holo; et pour 14 @android:style/Thème.DeviceDefault.

Si vous voulez personnaliser un thème ou si vous voulez utiliser quelque chose comme Theme.Light sur les appareils plus anciens, mais Theme.Holo.Light sur Nid d'abeille ou ci-dessus ont un coup d'oeil ici:

Sélectionnez un thème basé sur la version de la plateforme - la définition de différents styles via configurations des ressources

Holo Partout - la réponse à cette question plus de détails


TL;DR

Ne spécifiez pas un thème & set android:targetSdkVersion="11"

3voto

Vous pouvez déclarer un thème dans votre fichier values / styles.xml puis, dans votre fichier values-v11 / styles.xml, le remplacer par la version Holo:

values / styles.xml:

  <style name="DialogTheme" parent="@android:style/Theme.Dialog"></style>
 

values-v11 / styles.xml:

  <style name="DialogTheme" parent="@android:style/Theme.Holo.Light.Dialog.NoActionBar"></style>
 

Faites-le de cette façon et vous aurez des thèmes Holo sur les périphériques API 11+ et des thèmes standard sur les autres.

Cordialement Steffen Vangsgaard

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X