La barra de estado se vuelve blanca y no muestra contenido detrás de ella


Estoy probando AppCompat en Marshmallow. Y quiero tener una barra de estado transparente sin embargo se vuelve blanco. He probado un par de soluciones, pero no funcionaron para mí ( Barra de estado transparente no funciona con windowTranslucentNavigation= "false", Lollipop: dibuja detrás de StatusBar con su color establecido en transparente ). Aquí está el código relacionado.

Mis estilos.XML

<style name="Bacon" parent="Theme.Bacon"/>

<style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/theme_primary</item>
    <item name="colorPrimaryDark">@color/theme_primary_dark</item>
    <item name="colorAccent">@color/theme_accent</item>
    <item name="windowActionBar">false</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowBackground">@color/background_material_light</item>  
</style>

<style name="Theme.Bacon.Detail" parent="Bacon"/>

V21

<style name="Bacon" parent="Theme.Bacon">
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>

<style name="Theme.Bacon.Detail" parent="Bacon">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

Actividad

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true" />

</FrameLayout>

Fragmento

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="192dp"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginBottom="32dp"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed"
        app:statusBarScrim="@color/black_trans80">

        <ImageView
            android:id="@+id/photo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:contentDescription="@string/photo"
            android:fitsSystemWindows="true"
            android:scaleType="centerCrop"
            app:layout_collapseMode="parallax" />

        <android.support.v7.widget.Toolbar
            android:id="@+id/anim_toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    </android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

introduzca la descripción de la imagen aquí

Author: Community, 2015-09-07

20 answers

Encontré la respuesta en este enlace: El color de la barra de estado no cambia con el Diseño Relativo como elemento raíz

Así que resulta que necesitamos eliminar el

      <item name="android:statusBarColor">@android:color/transparent</item>

En estilos.xml(v21). Y funciona muy bien para mí.

 118
Author: Phoenix Wang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:45

(Un poco tarde para la fiesta, pero podría ayudar a alguien)

Tuve exactamente el mismo problema. De alguna manera, algunas actividades eran normales mientras que las nuevas que creé mostraban la barra de estado blanca en lugar del valor colorPrimaryDark.

Después de probar varios consejos, noté que las actividades de trabajo normal usaban CoordinatorLayout como la raíz del diseño, mientras que para los demás lo había reemplazado por diseños regulares porque no necesitaba las características (animación, etc) proporcionadas por CoordinatorLayout.

Así que el la solución es hacer CoordinatorLayout el diseño raíz, y luego dentro de él agregar su anterior diseño raíz. He aquí un ejemplo:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:fitsSystemWindows="true">

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <!-- your activity content here-->


  </LinearLayout>
</android.support.design.widget.CoordinatorLayout>

TENGA EN cuenta que sin android:fitsSystemWindows="true" esta solución no funciona para mí.

Probado en Piruleta y Malvavisco

 92
Author: Mauro Banze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-29 09:56:26

Después de intentar sin éxito todo lo anterior, encontré que establecer explícitamente el tema solucionó el problema.

setTheme(R.style.AppTheme);

Eso tiene que ir antes que el súper.onCreate () en tu actividad.

 8
Author: James Britton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-03 13:57:59

Añade esto a tu estilo.xml

    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>

Y esto en tu onCreate ();

 getWindow().getDecorView().setSystemUiVisibility(
       View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
 6
Author: Michele Lacorte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-06 22:10:37

Simplemente coloque este elemento en su v21\styles.xml:

Verdadero

Debería verse así:

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

 6
Author: Rami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-12 22:04:06

Solucioné mi problema cambiando el diseño de mi actividad de FrameLayout a RelativeLayout. Gracias a todos los que trataron de ayudar!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@android:color/transparent">

    <android.support.v4.view.ViewPager
      android:id="@+id/pager"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:background="@color/theme_primary_dark"
      android:fitsSystemWindows="true" />

</RelativeLayout>

Pruebe hierarchy-viewero ViewInspector. Estas herramientas pueden ayudarte.

 5
Author: pt2121,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-23 21:57:08

Me enfrenté al mismo problema. Lo que hice fue, en el " v21 / styles.el archivo xml " a cambió el valor true:

 <item name="windowDrawsSystemBarBackgrounds">true</item>

A:

 <item name="windowDrawsSystemBarBackgrounds">false</item>
 5
Author: Degomos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-02 09:30:06
 <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@color/colorPrimaryDark</item>
    </style

Simplemente reemplace esto, statusBarColor debe ser el color esperado y no TRANSPARENTE

 4
Author: Shrini Jaiswal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-28 10:31:38

Mejor enfoque

Comprueba tu estilo.archivo xml donde está el tema NoActionBar. Asegúrese de que su padre tiene como tema.AppCompat.NoActionBar y también personalizarlo mediante la adición de su esquema de color. Finalmente establezca sus temas en manifest según sea necesario.

A continuación se muestra una muestra de mis estilos.archivo xml (ActionBar + NoActionBar).

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<!-- No ActionBar application theme. -->
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
</style>
 3
Author: Nilesh Mahant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-15 10:58:30

Para mí funcionó haciendo lo siguiente:

  1. Establecer el tema .NoActionBar
  2. Envuelva la barra de herramientas en android.support.design.widget.AppBarLayout
  3. Hacer android.support.design.widget.CoordinatorLayout como el diseño padre.

Esencialmente es el tercer paso que dibuja la barra de estado en el colorPrimaryDark de lo contrario no se dibuja si se utiliza NoActionBar tema. 2º paso le dará a su barra de herramientas que overlay.

 2
Author: priyankvex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-23 09:17:12

Simplemente elimine la siguiente etiqueta del estilo v21 @android: color / transparente

Esto funciona para mí.

 2
Author: Shendre Kiran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-17 21:10:51

No estoy seguro de si es tarde, pero espero que ayude a alguien. * Cree una vista falsa con fondo transparente que se ajuste al diseño y cree un coordinatorlayout como elemento de diseño raíz.

<View
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent"
    android:fitsSystemWindows="true" />


<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:scaleType="centerCrop"
    android:src="@drawable/something" />

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

   .... YOUR LAYOUT

 1
Author: vahidlazio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-30 21:33:27
<item name="android:statusBarColor">@android:color/transparent</item>

Verás esa línea de código en values/styles/styles.xml(v21) . Eliminarlo y que resuelve el problema

Enlace a esta respuesta

 1
Author: Phares,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-20 19:24:16

Mi conjetura es que esto es causado por su android:windowBackground. Es @color/background_material_light una referencia al blanco?

 0
Author: hanspeide,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-05 21:21:33

Compruebe esto Barra de herramientas se convierte en blanco-AppBar no se dibuja después de ser desplazado fuera de la pantalla

Https://code.google.com/p/android/issues/detail?id=178037#c19

Estoy usando bibliotecas 23.0.0. y el error todavía ocurre.

La solución para esto es agregar una vista que casi no ocupa espacio y puede ser invisible. Vea la estructura a continuación.

<android.support.v4.widget.NestedScrollView
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

</android.support.v4.widget.NestedScrollView>

<android.support.design.widget.AppBarLayout>

    <android.support.v7.widget.Toolbar
        app:layout_scrollFlags="scroll|enterAlways" />

    <android.support.design.widget.TabLayout
        app:layout_scrollFlags="scroll|enterAlways" />

    <View
        android:layout_width="match_parent"
        android:layout_height=".3dp"
        android:visibility="visible"/>

</android.support.design.widget.AppBarLayout>

Esta Pregunta sobre Stackoverflow.com consulte este error también: Barra de herramientas CoordinatorLayout invisible en entrar hasta la altura completa AppBarLayout - Diseño a veces invisible una vez que entra en vista (incluso si no se introduce)

 0
Author: clickdroid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:45

Compruebe los esquemas de color implementados en styles-21

 0
Author: Shivegeeky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-27 08:51:43

Para estilos v23

 <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowLightStatusBar">true</item>
    <item name="android:statusBarColor">@android:color/white</item>
</style>

Para estilos v21

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:statusBarColor">@android:color/white</item>
</style>
 0
Author: Ankit Aman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-18 18:37:15

[Salida]

Expanda el directorio res -> valores -> estilos desde el panel proyecto.

Estilos abiertos.xml (v21)

UTILICE CUALQUIERA DE LAS MANERAS DE ABAJO

  1. Cambie truea false en la propiedad android:windowDrawsSystemBarBackgrounds.
  2. Cambie @android:color/transparent a @color/colorPrimaryDark en la propiedad android:statusBarColor.
  3. Elimine la línea de propiedad android:statusBarColor.
 0
Author: Ketan Ramani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-11 06:17:59

Si estás usando RelativeLayout / CoordinatorLayout esta es la solución que funcionó para mí:

Tienes que usar

  • CoordinatorLayout
  • AppBarLayout

Recuerde usar CoordinatorLayout en lugar de RelativeLayout (el rendimiento es mejor y funciona perfectamente con AppBarLayout)

Así es como debe comenzar tu fragmento

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/background_light"
android:fitsSystemWindows="true"
>

<android.support.design.widget.AppBarLayout
    android:id="@+id/main.appbar"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:fitsSystemWindows="true"
    >
    ...

Buena codificación!

 0
Author: Faustino Gagneten,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-13 02:39:51

Si su v21 / estilos.xml contain

<resources>
    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>
</resources>

Entonces, Remove or comment below line or change colour of status bar,

<item name="android:statusBarColor">@android:color/transparent</item>

Está funcionando bien. Espero que esto sea útil. Gracias.

 0
Author: sahu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-18 19:58:55