Ustawianie koloru tła motywu Androida

105

Próbuję zmodyfikować domyślny kolor motywu tła, co powinno być łatwe, ale o dziwo nie mogę go uruchomić. Pamiętaj, że chcę, aby zmiana dotyczyła całej aplikacji, a nie tylko jednej czynności. Oto mój kod:

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

i oczywiście w manifeście

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

Dokument dotyczący Androida, z którym konsultowałem się w sprawie modyfikowania motywów: http://developer.android.com/guide/topics/ui/themes.html

Próbowałem przełączać się między white_opaque i pitch_black dla wszystkich atrybutów xml, ale nic to nie zmienia. Jakieś sugestie?

Sztywny
źródło
1
Spróbuj usunąć kanał alfa
Blundell
W porządku, właśnie to zrobiłem, chociaż wciąż to samo.
Stark
1
To najlepsze rozwiązanie, które przeczytałem stackoverflow.com/a/33213433/963543
Ata Iravani

Odpowiedzi:

58

Okay okazało się, że popełniłem naprawdę głupi błąd. Urządzenie, którego używam do testów, działa pod kontrolą Androida 4.0.4, poziom API 15.

Plik styles.xml, który edytowałem, znajduje się w folderze wartości domyślnych. Edytowałem style.xml w folderze values-v14 i teraz wszystko działa dobrze.

Sztywny
źródło
4
Lub możesz po prostu usunąć inne foldery stylów, jeśli ich nie używasz. Miałem ten sam problem i naprawiłem go za pomocą jednego pliku styles.xml w folderze „wartości”. Mój problem polegał na tym, że miałem element motywu dla działania w pliku manifestu (który oczywiście zastępował 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
źródło
5

Otwórz res -> values -> styles.xmli <style>dodaj tę linię, zastępując ścieżkę obrazu <item name="android:windowBackground">@drawable/background</item>. Przykład:

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

Istnieje <item name ="android:colorBackground">@color/black</item>również, że wpłynie to nie tylko na tło twojego głównego okna, ale na wszystkie komponenty w twojej aplikacji. Przeczytaj o dostosowywaniu motywu tutaj .

Jeśli chcesz mieć style specyficzne dla wersji :

Jeśli nowa wersja Androida dodaje atrybuty motywu, których chcesz użyć, możesz dodać je do swojego motywu, zachowując zgodność ze starszymi wersjami. Wszystko, czego potrzebujesz, to inny plik styles.xml zapisany w katalogu wartości, który zawiera kwalifikator wersji zasobu. Na przykład:

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

Ponieważ style w pliku values ​​/ styles.xml są dostępne dla wszystkich wersji, motywy w values-v21 / styles.xml mogą je dziedziczyć. W związku z tym można uniknąć powielania stylów, rozpoczynając od motywu „podstawowego”, a następnie rozszerzając go w stylach specyficznych dla wersji.

Przeczytaj więcej tutaj (dokument w temacie) .

Blasanka
źródło