Je fais une application Android mais je pensais à des thèmes ..
Si je ne déclare pas un thème de mon application Android, quel thème sera utilisé? Où puis-je trouver ces informations? Quels sont les critères d’utilisation les uns et les autres?
Je pensais à, si je veux personnaliser toutes mes applications, je dois étendre un thème et personnaliser tous les éléments que je veux personnaliser.
Et si l’on suppose l’un d’eux comme défaut? Météo Je dois le personnaliser à nouveau? Comment puis-je savoir quel est celui par défaut?
Le thème par défaut varie en fonction du niveau de l'API (pour être cohérent avec l'interface utilisateur générale).
Sur API <10, le thème était un ensemble de styles (comme dans le lien ci-dessous) appelé Theme
, au-dessus de cette API 10, le thème par défaut était Theme_Holo
et, à partir de l’API 21, il est devenu Theme.Material
.
Theme
ou Theme.AppCompat
Holo_Theme
ou Theme.AppCompat
Theme.Material
La plupart de ces styles sont disponibles dans les bibliothèques Android.support
.
PS: CONNAÎTRE que le thème de la lumière a toujours été celui par défaut.
Il est préférable de définir vous-même un thème par défaut au lieu de s’appuyer sur Android pour choisir le thème par défaut. En effet, différentes versions d'Android may ont des thèmes par défaut complètement différents et risquent de gâcher vos présentations.
Vous pouvez déclarer un thème pour votre application dans AndroidManifest.xml
<application Android:theme="@style/MyTheme" .....>
Ensuite, dans le dossier res/values
, vous éditez/ajoutez un fichier themes.xml
et ajoutez ce qui suit:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android">
<style name="MyTheme" parent="@Android:style/Theme.Holo">
... customize your theme here
</style>
</resources>
Vous pouvez modifier la parent
de votre thème à votre guise ...
Vous pouvez également utiliser @Android:style/Theme.Holo
directement dans AndroidManifest.xml
si vous ne souhaitez pas du tout personnaliser .
Utilisez Theme.AppCompat.Holo
si la version de l'API est inférieure à 11
Le thème par défaut pour App est implémenté dans Resources.Java !
/**
* Returns the most appropriate default theme for the specified target SDK version.
* <ul>
* <li>Below API 11: Gingerbread
* <li>APIs 11 thru 14: Holo
* <li>APIs 14 thru XX: Device default dark
* <li>API XX and above: Device default light with dark action bar
* </ul>
*
* @param curTheme The current theme, or 0 if not specified.
* @param targetSdkVersion The target SDK version.
* @return A theme resource identifier
* @hide
*/
public static int selectDefaultTheme(int curTheme, int targetSdkVersion) {
return selectSystemTheme(curTheme, targetSdkVersion,
com.Android.internal.R.style.Theme,
com.Android.internal.R.style.Theme_Holo,
com.Android.internal.R.style.Theme_DeviceDefault,
com.Android.internal.R.style.Theme_DeviceDefault_Light_DarkActionBar);
}
/** @hide */
public static int selectSystemTheme(int curTheme, int targetSdkVersion, int orig, int holo,
int dark, int deviceDefault) {
if (curTheme != 0) {
return curTheme;
}
if (targetSdkVersion < Build.VERSION_CODES.HONEYCOMB) {
return orig;
}
if (targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
return holo;
}
if (targetSdkVersion < Build.VERSION_CODES.CUR_DEVELOPMENT) {
return dark;
}
return deviceDefault;
}
Cela varie en fonction du niveau de l'API. Il est donc préférable de définir votre propre AppTheme dans AndroidManifest.xml pour assurer le thème dans tous les appareils de niveau API.
Veuillez vous référer à la réponse précédente.