Estoy probando AppCompat en Marshmallow. Y quiero tener una barra de estado transparente, pero se vuelve blanca. Probé un par de soluciones pero no funcionaron para mí (la 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>
Respuestas:
Encontré la respuesta en este enlace: el color de la barra de estado no cambia con el diseño relativo como elemento raíz
Entonces resulta que necesitamos quitar el
en styles.xml (v21). Y funciona bien para mí.
fuente
(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 una barra de estado blanca en lugar de
colorPrimaryDark
valor.Después de probar varios consejos, noté que las actividades de trabajo normales se usaban
CoordinatorLayout
como raíz del diseño, mientras que para las otras las había reemplazado por diseños regulares porque no necesitaba las funciones (animación, etc.) proporcionadas porCoordinatorLayout
.Entonces, la solución es hacer
CoordinatorLayout
el diseño raíz y luego, dentro de él, agregar la raíz del diseño anterior. Aquí hay un ejemplo:TENGA EN CUENTA que sin
android:fitsSystemWindows="true"
esta solución no funciona para mí.Probado en Lollipop y Marshmallow
fuente
android:fitsSystemWindows="true"
aCoordinatorLayout
Android 8.CoordinatorLayout
cuando experimenté el mismo problema y la propiedad específica que solucionó esto para mí fueandroid:fitsSystemWindows="true"
android:fitsSystemWindows="true"
no funcionó para mí. Lo que resolvió mi problema es usar un tema que no estáAppTheme.NoActionBar
en la actividad con unCoordinatorLayout
. No sé por qué eso lo solucionó.CoordinatorLayout
oandroid:fitsSystemWindows="true"
ninguno funciona para mí.fuente
Tienes que agregar esta propiedad a tu estilo para ver el contenido
fuente
Agregue esto en su style.xml
y esto en tu onCreate ();
fuente
Después de intentar sin éxito todo lo anterior, descubrí que establecer explícitamente el tema solucionó el problema.
Eso tiene que ir antes del super.OnCreate () en su actividad.
fuente
Simplemente coloque este elemento en su v21 \ styles.xml:
cierto
Debe tener un aspecto como este :
fuente
false
valores en los últimos 2 elementos. Extraño, pero gracias.Me enfrenté al mismo problema. Lo que hice fue, en el archivo "v21 / styles.xml", cambié el valor verdadero:
a:
fuente
Verá esa línea de código en values / styles / styles.xml (v21). Eliminarlo y eso resuelve el problema.
Enlace a esta respuesta
fuente
Solucioné mi problema cambiando el diseño de mi actividad de FrameLayout a RelativeLayout. ¡Gracias a todos los que intentaron ayudar!
Pruebe el visor de jerarquía o ViewInspector . Estas herramientas pueden ayudarte.
fuente
Simplemente elimine la siguiente etiqueta del estilo v21 @android: color / transparent
Esto funciona para mi.
fuente
Mejor enfoque
Compruebe su archivo style.xml donde está su tema NoActionBar. Asegúrese de que tenga un padre como Theme.AppCompat.NoActionBar y también personalícelo agregando su combinación de colores. Finalmente, configure sus temas en manifiesto según sea necesario.
A continuación se muestra una muestra de mi archivo styles.xml (ActionBar + NoActionBar).
fuente
Para mí funcionó haciendo lo siguiente:
.NoActionBar
android.support.design.widget.AppBarLayout
android.support.design.widget.CoordinatorLayout
como diseño principal.Esencialmente, es el tercer paso que dibuja la barra de estado en el
colorPrimaryDark
caso contrario, no se dibuja si usa elNoActionBar
tema. El segundo paso le dará a su barra de herramientas esa superposición .fuente
Para estilos v23
Para estilos v21
fuente
[
Expanda res -> valores -> directorio de estilos desde el panel del proyecto.
Abra styles.xml (v21)
UTILICE CUALQUIERA DE ABAJO MANERA
android:windowDrawsSystemBarBackgrounds
propiedad.android:statusBarColor
propiedad.android:statusBarColor
línea de propiedad.fuente
Si su v21 / styles.xml contiene
Luego, elimine o comente debajo de la línea o cambie el color de la barra de estado,
Está funcionando bien. Espero que esto sea útil. Gracias.
fuente
He encontrado una solución para esto.
agregue esto a su estilo y funcionará para api 21 o superior.
fuente
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 haga un diseño de coordinador como elemento de diseño raíz.
fuente
Esto tiene trabajo para mi
fuente
Supongo que esto es causado por su
android:windowBackground
. ¿Es@color/background_material_light
una referencia al blanco?fuente
<item name="android:statusBarColor">@android:color/transparent</item>
con<item name="android:statusBarColor">@null</item>
.Compruebe que esta barra de herramientas se vuelve blanca: AppBar no se dibuja después de desplazarse fuera de la pantalla
https://code.google.com/p/android/issues/detail?id=178037#c19
Estoy usando las 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.
Estas preguntas en Stackoverflow.com también se refieren a este error: CoordinatorLayout Toolbar invisible al ingresar hasta AppBarLayout de altura completa: el diseño a veces es invisible una vez que ingresa a la vista (incluso si no se ingresa)
fuente
Si está utilizando RelativeLayout / CoordinatorLayout, esta es la solución que funcionó para mí:
Tienes que usar
Recuerde usar CoordinatorLayout en lugar de RelativeLayout (el rendimiento es mejor y funciona perfectamente con AppBarLayout)
Así es como debería comenzar tu fragmento
¡Buena codificación!
fuente
agregue el elemento 'windowTranslucentStatus' en estilos
fuente
Agregue esto en su style.xml
Nota: El color de la barra de estado no se admite por debajo del nivel de API 21.
fuente
Agregue esta línea 2 en el archivo java a continuación
fuente