Définition de la couleur d'arrière-plan du thème Android


105

J'essaie de modifier la couleur du thème d'arrière-plan par défaut, ce qui devrait être facile mais étonnamment je ne peux pas le faire fonctionner. Veuillez noter que je souhaite que la modification s'applique à l'ensemble de l'application, pas seulement à une seule activité. Voici mon code:

styles.xml

<resources>

    <color name="white_opaque">#FFFFFFFF</color>
    <color name="pitch_black">#FF000000</color>

    <style name="AppTheme" parent="android:Theme.Light">
        <item name="android:background">@color/white_opaque</item>
        <item name="android:windowBackground">@color/white_opaque</item>
        <item name="android:colorBackground">@color/white_opaque</item>
    </style>

</resources>

et bien sûr dans le manifeste

<application
    .
    .
    .
    android:theme="@style/AppTheme" > 
</application>

Doc Android que j'ai consulté sur la modification des thèmes: http://developer.android.com/guide/topics/ui/themes.html

J'ai essayé de basculer entre white_opaque et pitch_black pour tous les attributs xml mais cela ne change rien. Aucune suggestion?


1
Essayez de supprimer le canal alpha
Blundell

D'accord, je viens de le faire, toujours la même chose.
Stark

1
C'est la meilleure solution que j'ai lue stackoverflow.com/a/33213433/963543
Ata Iravani

Réponses:


58

Okay s'est avéré que j'ai fait une erreur vraiment stupide. L'appareil que j'utilise pour les tests exécute Android 4.0.4, niveau d'API 15.

Le fichier styles.xml que j'étais en train de modifier se trouve dans le dossier des valeurs par défaut. J'ai édité le styles.xml dans le dossier values-v14 et tout fonctionne très bien maintenant.


4
Ou vous pouvez simplement supprimer les autres dossiers de styles si vous ne les utilisez pas. J'ai eu le même problème et je l'ai corrigé avec un styles.xml, dans le dossier «values». Mon problème était que j'avais un élément de thème pour l'activité dans le fichier manifeste (qui a bien sûr remplacé l'AppTheme).
Stephen Hosking

28
<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Holo.NoActionBar">
        <item name="android:windowBackground">@android:color/black</item>
    </style>

</resources>

5

Ouvrez res -> values -> styles.xmlet <style>ajoutez cette ligne en remplaçant par le chemin de votre image <item name="android:windowBackground">@drawable/background</item>. Exemple:

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@drawable/background</item>
    </style>

</resources>

Il y a <item name ="android:colorBackground">@color/black</item>aussi un qui affectera non seulement l'arrière-plan de votre fenêtre principale, mais tous les composants de votre application. En savoir plus sur la personnalisation du thème ici .

Si vous voulez des styles spécifiques à la version :

Si une nouvelle version d'Android ajoute des attributs de thème que vous souhaitez utiliser, vous pouvez les ajouter à votre thème tout en restant compatible avec les anciennes versions. Tout ce dont vous avez besoin est un autre fichier styles.xml enregistré dans un répertoire de valeurs qui inclut le qualificateur de version de ressource. Par exemple:

res/values/styles.xml        # themes for all versions
res/values-v21/styles.xml    # themes for API level 21+ only

Étant donné que les styles du fichier values ​​/ styles.xml sont disponibles pour toutes les versions, vos thèmes dans values-v21 / styles.xml peuvent en hériter. En tant que tel, vous pouvez éviter de dupliquer les styles en commençant par un thème «de base», puis en l'étendant dans les styles spécifiques à votre version.

En savoir plus ici (doc dans le thème) .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.