Definir a cor de fundo do tema Android

105

Estou tentando modificar a cor do tema de fundo padrão, o que deve ser fácil, mas, surpreendentemente, não consigo fazer funcionar. Observe que desejo que a mudança seja em todo o aplicativo, não apenas em uma única atividade. Aqui está o meu código:

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>

e, claro, no manifesto

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

Documento Android que consultei sobre a modificação de temas: http://developer.android.com/guide/topics/ui/themes.html

Eu tentei alternar entre white_opaque e pitch_black para todos os atributos xml, mas isso não muda nada. Alguma sugestão?

Rígido
fonte
1
Tente remover o canal alfa
Blundell
Tudo bem, eu acabei de fazer, mas ainda o mesmo.
Stark
1
Esta é a melhor solução que li stackoverflow.com/a/33213433/963543
Ata Iravani

Respostas:

58

Ok, descobri que cometi um erro muito bobo. O dispositivo que estou usando para teste está executando o Android 4.0.4, API de nível 15.

O arquivo styles.xml que eu estava editando está na pasta de valores padrão. Eu editei o styles.xml na pasta values-v14 e está funcionando bem agora.

Rígido
fonte
4
Ou você pode simplesmente excluir as outras pastas de estilos se não as estiver usando. Tive o mesmo problema e resolvi com um styles.xml, na pasta 'valores'. Meu problema era que eu tinha um item de tema para a Activity no arquivo de manifesto (que obviamente substituía o AppTheme).
Stephen Hosking de
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
fonte
5

Abra res -> values -> styles.xmle <style>adicione esta linha substituindo pelo caminho da imagem <item name="android:windowBackground">@drawable/background</item>. Exemplo:

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

Também há um <item name ="android:colorBackground">@color/black</item>que afetará não apenas o plano de fundo da janela principal, mas todos os componentes do seu aplicativo. Leia sobre personalizar o tema aqui .

Se você quiser estilos específicos de versão :

Se uma nova versão do Android adicionar atributos de tema que você deseja usar, você pode adicioná-los ao seu tema e ainda ser compatível com as versões antigas. Tudo o que você precisa é de outro arquivo styles.xml salvo em um diretório de valores que inclui o qualificador de versão do recurso. Por exemplo:

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

Como os estilos no arquivo values ​​/ styles.xml estão disponíveis para todas as versões, seus temas em values-v21 / styles.xml podem herdá-los. Dessa forma, você pode evitar a duplicação de estilos começando com um tema "base" e estendendo-o em seus estilos específicos da versão.

Leia mais aqui (doc no tema) .

Blasanka
fonte