web-dev-qa-db-fra.com

Thème par défaut Android

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?

15
user1851366

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.

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.

16
shkschneider

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

4
Populus

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.

0
Thomas Liu