Configuración del color de fondo del tema de Android

105

Estoy tratando de modificar el color del tema de fondo predeterminado, lo cual debería ser fácil, pero sorprendentemente no puedo hacerlo funcionar. Tenga en cuenta que quiero que el cambio se aplique a toda la aplicación, no solo a una sola actividad. Aquí está mi 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>

y por supuesto en el manifiesto

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

Documento de Android que consulté sobre la modificación de temas: http://developer.android.com/guide/topics/ui/themes.html

Intenté cambiar entre white_opaque y pitch_black para todos los atributos xml pero no cambia nada. ¿Alguna sugerencia?

Rígido
fuente
1
Intente eliminar el canal alfa
Blundell
Bien, acabo de hacerlo, aunque sigue siendo el mismo.
Stark
1
Esta es la mejor solución que he leído stackoverflow.com/a/33213433/963543
Ata Iravani

Respuestas:

58

Bueno, resultó que cometí un error realmente tonto. El dispositivo que estoy usando para las pruebas ejecuta Android 4.0.4, nivel de API 15.

El archivo styles.xml que estaba editando está en la carpeta de valores predeterminados. Edité el styles.xml en la carpeta values-v14 y ahora funciona bien.

Rígido
fuente
4
O simplemente puede eliminar las otras carpetas de estilos si no las está utilizando. Tuve el mismo problema y lo solucioné con un styles.xml, en la carpeta 'valores'. Mi problema fue que tenía un elemento de tema para la Actividad en el archivo de manifiesto (que, por supuesto, anulaba el Tema de la aplicación).
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
fuente
5

Abra res -> values -> styles.xmly <style>agregue esta línea reemplazando con la ruta de su imagen <item name="android:windowBackground">@drawable/background</item>. Ejemplo:

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

También hay una <item name ="android:colorBackground">@color/black</item>que afectará no solo el fondo de la ventana principal, sino también a todos los componentes de su aplicación. Lea acerca de personalizar el tema aquí .

Si desea estilos específicos de la versión :

Si una nueva versión de Android agrega atributos de tema que desea usar, puede agregarlos a su tema sin dejar de ser compatible con versiones anteriores. Todo lo que necesita es otro archivo styles.xml guardado en un directorio de valores que incluye el calificador de la versión del recurso. Por ejemplo:

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

Debido a que los estilos del archivo values ​​/ styles.xml están disponibles para todas las versiones, sus temas en values-v21 / styles.xml pueden heredarlos. Como tal, puede evitar la duplicación de estilos comenzando con un tema "base" y luego extendiéndolo en los estilos específicos de su versión.

Leer más aquí (doc en tema) .

Blasanka
fuente