Translúcido StatusBar con el color dinámico ActionBar en Android

Estoy intentando realizar una barra de estado translúcida (de modo que mi vista de la navegación esté ATRÁS de la barra de estado) pero todavía quiera cambiar el color de mi barra de acción dinámicamente. Debido a esto, el color de la barra de estado necesita cambiar a una versión más oscura de mi color de la barra de acciones.

Si configuro mi barra de estado como transparente, como sugieren muchas fuentes, mi color primary_dark se utiliza como fondo de mi barra de estado. Sin embargo, como voy a cambiar el color de la barra de acción durante runtime, primary_dark no necesariamente debe ser el color oscuro de mi barra de acción.

Si establezco mi barra de estado en el color de la barra de acciones, la transparencia se ha ido. Si configuro mi barra de estado en el color de la barra de acciones y añado transparencia, la barra de estado no se ve ni bien ni bien y mi vista de navegación superpuesta todavía no es muy "transparente" / "colorida".

La Bandeja de entrada de Google tiene tres colores diferentes: Bandeja de entrada (azul), Snoozed (amarillo) y Done (verde).

¿Qué puedo hacer para lograr este comportamiento?

En realidad, es bastante fácil de implementar.

Introduzca aquí la descripción de la imagen

Primer paso – es cambiar la altura de la Toolbar de Toolbar :

  • Cambiar la height a wrap_content

Así que para mí se ve así:

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

A continuación, anular recursos para v19 :

  <?xml version="1.0" encoding="utf-8"?> <resources> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Style properties --> .... <!-- These properties are important:--> <item name="android:windowTranslucentStatus">true</item> <item name="windowActionBarOverlay">false</item> <item name="android:windowActionBarOverlay">false</item> <item name="android:fitsSystemWindows">false</item> </style> </resources> 

A continuación, en la Activity , ajuste de padding para la Toolbar :

  Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setPadding(0, getStatusBarHeight(), 0, 0); ...... ...... public int getStatusBarHeight() { int result = 0; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) { int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } } return result; } 

Y en realidad, es casi todo. Ahora, una vez que quiero cambiar el color de la barra de herramientas, estoy llamando a esto:

  if (getSupportActionBar() != null) { getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.GREEN)); } 

El diseño de la actividad:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:openDrawer="start"> <include layout="@layout/app_bar_main" android:layout_width="match_parent" android:layout_height="match_parent" /> <android.support.design.widget.NavigationView android:id="@+id/nav_view" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" android:fitsSystemWindows="false" app:headerLayout="@layout/nav_header_main" app:menu="@menu/activity_main_drawer" /> </android.support.v4.widget.DrawerLayout> 

¡NÓTESE BIEN! En versiones pre-Kitkat OS, la barra de estado permaneció igual, no translúcida.

He subido el código fuente de la aplicación de prueba a mi dropbox – no dude en verlo .

Espero que ayude

  • NavigationView y diseño personalizado
  • DrawerLayout con NavigationView - no mostrar el efecto de rizo en el clic
  • Cambiar Navegación Ver color del elemento Dinámicamente Android
  • Cómo obtener divisores en el menú de NavigationView sin títulos?
  • Cómo dar color de texto personalizado para un solo elemento de menú en un NavigationView?
  • NavigationView onClick de xml provoca errores
  • Obtención de error al inflar la clase android.support.design.widget.NavigationView
  • NavigationView selecciona el elemento seleccionado como
  • agrega onClickListener al encabezado de vista de navegación usando la biblioteca de soporte de diseño de android
  • Uso de NavigationView desde Android Design Support Library
  • Cómo agregar un elemento a un grupo de menús en NavigationView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.