personalizar oreo ocultar notificaciones iconos estado como color cambiar barra android android-support-library appcompat android-appcompat androiddesignsupport android-6.0-marshmallow

oreo - ocultar iconos de la barra de estado android



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

Estoy probando AppCompat en Marshmallow. Y quiero tener una barra de estado transparente, sin embargo, se vuelve blanca. He intentado un par de soluciones pero no funcionaron para mí (la barra de estado transparente no funciona con windowTranslucentNavigation = "false" , Lollipop: dibuje detrás de statusBar con su color configurado como transparente ). Aquí está el código relacionado.

My styles.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>


(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 del valor colorPrimaryDark .

Después de probar varios consejos, me di cuenta de que las actividades normales de trabajo eran todas usando 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 .

Entonces, la solución es hacer que CoordinatorLayout el diseño raíz, y luego, dentro de él, agregue su raíz de diseño anterior. 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


Agregue esto en su style.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);


Compruebe que esta barra de herramientas se vuelve blanca: la barra de aplicaciones no se dibuja después de desplazarse fuera de la pantalla

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

Estoy usando bibliotecas 23.0.0. y el error aún ocurre.

Una solución para esto es agregar una vista que casi no ocupa espacio y puede ser invisible. Ver 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>

Estas preguntas en .com también se refieren a este error: CoordinatorLayout Toolbar invisible al ingresar hasta altura completa AppBarLayout - El diseño a veces es invisible una vez que ingresa a la vista (incluso si no se ingresó)


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

setTheme(R.style.AppTheme);

Eso tiene que ir antes del super.OnCreate () en tu actividad.



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

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

a:

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


Mejor enfoque

Verifique su archivo style.xml donde está su tema NoActionBar. Asegúrese de que tenga padre como Theme.AppCompat.NoActionBar y también personalícelo agregando su esquema de color. Finalmente configure sus temas en manifiesto según sea necesario.

A continuación se muestra una muestra 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>


No estoy seguro de si es tarde, pero espero que ayude a alguien. * Haga una vista falsa con fondo transparente que se ajuste al diseño, y haga un diseño coordinador como su 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


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>


Para mí funcionó haciendo lo siguiente:

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

Esencialmente, es el tercer paso que dibuja la barra de estado en colorPrimaryDark contrario, no se dibujará si usa el tema NoActionBar . El segundo paso le dará a tu barra de herramientas esa superposición .


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

Tienes que usar

  • CoordinadorDisposición
  • AppBarLayout

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

Así es como debería 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!


Si su v21 / styles.xml contiene

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

Luego, elimine o comente debajo de la línea o cambie el color de la barra de estado,

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

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


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

Esto funciona para mi.


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


Solucioné mi problema cambiando mi diseño de Actividad de FrameLayout a RelativeLayout. ¡Gracias a todos los que intentaron 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-viewer o ViewInspector . Estas herramientas pueden ayudarte.


Supongo que esto es causado por su android:windowBackground . ¿ @color/background_material_light una referencia al blanco?


Tienes que agregar esta propiedad a tu estilo para ver el contenido

<item name="android:windowLightStatusBar" tools:ignore="NewApi">true</item>


[

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

Abra styles.xml (v21)

UTILICE CUALQUIERA DE LAS MANERAS A CONTINUACIÓN

  1. Cambie verdadero a falso en android:windowDrawsSystemBarBackgrounds propiedad android:windowDrawsSystemBarBackgrounds .
  2. Cambie @android: color / transparent a @ color / colorPrimaryDark en android:statusBarColor propiedad android:statusBarColor .
  3. Elimine la línea de propiedad android:statusBarColor .

verifique los esquemas de color implementados en styles-21


<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 su color esperado y no TRANSPARENTE


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

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

Enlace a esta respuesta