Einstellen der Hintergrundfarbe des Android-Themas

105

Ich versuche, die Standardfarbe des Hintergrundthemas zu ändern, was einfach sein sollte, aber überraschenderweise kann ich es nicht zum Laufen bringen. Bitte beachten Sie, dass die Änderung für die gesamte App gelten soll, nicht nur für eine einzelne Aktivität. Hier ist mein 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>

und natürlich im Manifest

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

Android-Dokument, das ich zum Ändern von Themen konsultiert habe: http://developer.android.com/guide/topics/ui/themes.html

Ich habe versucht, für alle XML-Attribute zwischen white_opaque und Pitch_black zu wechseln, aber es ändert nichts. Irgendwelche Vorschläge?

Stark
quelle
1
Versuchen Sie, den Alpha-Kanal zu entfernen
Blundell
Okay, ich habe es einfach getan, trotzdem das Gleiche.
Stark
1
Dies ist die beste Lösung, die ich gelesen habe stackoverflow.com/a/33213433/963543
Ata Iravani

Antworten:

58

Okay, es stellte sich heraus, dass ich einen wirklich dummen Fehler gemacht habe. Auf dem Gerät, das ich zum Testen verwende, wird Android 4.0.4, API Level 15 ausgeführt.

Die von mir bearbeitete Datei styles.xml befindet sich im Standardwertordner. Ich habe die Datei styles.xml im Ordner values-v14 bearbeitet und jetzt funktioniert alles einwandfrei.

Stark
quelle
4
Oder Sie können die anderen Stilordner einfach löschen, wenn Sie sie nicht verwenden. Ich hatte das gleiche Problem und habe es mit einer styles.xml im Ordner 'values' behoben. Mein Problem war, dass ich ein Themenelement für die Aktivität in der Manifestdatei hatte (das natürlich das AppTheme überschrieb).
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
quelle
5

Öffnen res -> values -> styles.xmlSie <style>diese Zeile und fügen Sie sie hinzu, indem Sie sie durch Ihren Bildpfad ersetzen <item name="android:windowBackground">@drawable/background</item>. Beispiel:

<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>

Es gibt auch eine <item name ="android:colorBackground">@color/black</item>, die nicht nur den Hintergrund des Hauptfensters, sondern alle Komponenten in Ihrer App betrifft. Lesen Sie mehr über customize Thema hier .

Wenn Sie versionenspezifische Stile wünschen :

Wenn eine neue Version von Android Themenattribute hinzufügt, die Sie verwenden möchten, können Sie diese Ihrem Thema hinzufügen, während sie weiterhin mit alten Versionen kompatibel sind. Sie benötigen lediglich eine weitere Datei styles.xml, die in einem Werteverzeichnis gespeichert ist, das das Qualifikationsmerkmal für die Ressourcenversion enthält. Beispielsweise:

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

Da die Stile in der Datei values ​​/ styles.xml für alle Versionen verfügbar sind, können Ihre Designs in values-v21 / styles.xml sie erben. Daher können Sie das Duplizieren von Stilen vermeiden, indem Sie mit einem "Basis" -Thema beginnen und es dann in Ihren versionierungsspezifischen Stilen erweitern.

Lesen Sie hier mehr (Dokument im Thema) .

Blasanka
quelle