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?

Rigide
la source
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.

Rigide
la source
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>
Oded Breiner
la source
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) .

Blasanka
la source