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 intentado un par de soluciones, pero no funcionó para mí ( Transparent barra de estado no funciona con windowTranslucentNavigation = "false" , Lollipop: dibujar detrás de statusBar con su color establecido a transparente ). Aquí está el código relacionado.
Mis estilos.xml
- OnPrepareActionMode no se llama al crear ActionMode
- AppCompatActivity.onCreate sólo se puede llamar desde dentro del mismo grupo de bibliotecas
- Cómo implementar DrawerArrowToggle de Android appcompat v7 21 library
- Android SwitchCompat no está alineado
- Switchcompat no muestra el conmutador
<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>
- R.java no está generando debido a appcompat v7?
- CoordinatorLayout con RecyclerView & CollapsingToolbarLayout
- Cómo elegir PreferenceFragmentCompat
- Ciclo de vida del fragmento AppCompat cambiado
- Android appcompat API 10 vista de acción de contracción
- El botón de radio creado dinámicamente o CheckBox no utiliza el acento de color
- Icono ActionBarDrawerToggle que falta cuando se utiliza AppCompat v22
- Estilo AppCompat SearchView con AppCompat 22.1.0 no funciona
(Un poco tarde para la fiesta, pero podría ayudar a alguien)
Tuve el mismo problema. De alguna manera, algunas actividades eran normales mientras que las nuevas que creé mostraban una barra de estado blanca en lugar del valor de colorPrimaryDark
.
Después de probar varios consejos, me di cuenta de que las actividades normales de trabajo donde todos los que utilizan CoordinatorLayout
como la raíz de la distribución, mientras que para los demás que había sustituido por disposiciones regulares porque no necesitaba las características (animación, etc) proporcionada por CoordinatorLayout
.
Así que la solución es hacer CoordinatorLayout
el diseño de la raíz, y luego dentro de él agregar su anterior raíz de diseño. Aquí hay 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 Lollipop y Marshmallow
Encontré la respuesta en este enlace: Barra de estado El color no cambia con Layout relativo como elemento raíz
Así que resulta que necesitamos eliminar el
<item name="android:statusBarColor">@android:color/transparent</item>
En styles.xml (v21). Y funciona muy bien para mí.
Después de probar sin éxito todo lo anterior, encontré que establecer explícitamente el tema fijado el problema.
setTheme(R.style.AppTheme);
Que tiene que ir antes de la super.OnCreate () en su actividad.
Agrega esto en tu estilo.xml
<item name="android:windowTranslucentStatus">true</item> <item name="android:statusBarColor">@android:color/transparent</item>
Y esto en su onCreate ();
getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
Sólo tiene que poner este elemento en su v21 \ styles.xml:
cierto
Debe tener un aspecto como este :
<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>
Para mí funcionó haciendo lo siguiente:
- Establezca el tema
.NoActionBar
- Envuelva la barra de herramientas en
android.support.design.widget.AppBarLayout
- Realice
android.support.design.widget.CoordinatorLayout
como el diseño principal.
Esencialmente es el tercer paso que dibuja la barra de estado en el colorPrimaryDark
contrario no se dibuja si se utiliza NoActionBar
tema. El segundo paso le dará a su barra de herramientas esa superposición .
Fijé mi edición cambiando mi disposición de la 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>
Intente jerarquía-visor o ViewInspector . Estas herramientas pueden ayudarle.
No estoy seguro de si es tarde, pero espero que ayude a alguien. * Hacer una falsa vista con fondo transparente que se ajuste a la disposición, y hacer un coordinatorlayout como su elemento de la disposición 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
Me enfrenté a la misma cuestión. Lo que hice fue que en el archivo "v21 / styles.xml" cambió el valor true:
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
a:
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
Mi conjetura es que esto es causado por su android:windowBackground
. ¿Es @color/background_material_light
una referencia a blanco?
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 utilizando las bibliotecas 23.0.0. Y el error todavía se produce.
Solución para esto es agregar vista que no ocupa casi ningún espacio y puede ser invisible. Vea la estructura abajo.
<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 en Stackoverflow.com se refieren a este error también: CoordinatorLayout Toolbar invisible en entrar hasta la altura completa AppBarLayout – Layout a veces invisible una vez que entra en la vista (incluso si no se ha introducido)
Mejor enfoque
Compruebe su archivo style.xml donde está su tema NoActionBar. Asegúrese de que tiene su padre como Theme.AppCompat.NoActionBar y también personalizarlo mediante la adición de su esquema de color. Por último establecer sus temas en manifiesto, según sea necesario.
A continuación se muestra un ejemplo de mi archivo styles.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>
Sólo quite la siguiente etiqueta del estilo v21 @android: color / transparente
Esto funciona para mí.
- AppCompat_v7 Barra de herramientas como barra de acciones que no muestra acciones 'siempre' desde el menú, pero la barra de herramientas de la API no
- ¿Es posible tener un ViewPager dentro de un ScrollView?