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.
- ¿Cómo agregar valor de notificación para el elemento en NavigationView para el cajón de diseño de material?
- NavigationView cómo manejar contenido de encabezado dinámico
- ¿Cómo puedo cambiar el color del icono de la hamburguesa ActionBar?
- ¿Cómo personalizar el fondo del elemento y el color del texto del elemento dentro de NavigationView?
- ¿Cómo puedo abrir mediante programación (mostrar en pantalla) NavigationView
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?
- Android - Navegación Ver el color del fondo del menú del elemento
- ¿Cómo puedo eliminar el relleno superior innecesario de la vista de navegación?
- ¿Cómo crear un divisor simple en el nuevo NavigationView?
- Cómo configurar la tipografía personalizada en los elementos de NavigationView?
- Elementos del menú de NavigationView con el contador a la derecha
- Cómo obtener el ID de submenú en la vista de navegación
- Cómo establecer el comportamiento de comprobación compartida en todos los grupos en NavigationView?
- Configuración del relleno de la barra de estado en NavigationView en Android
En realidad, es bastante fácil de implementar.
Primer paso – es cambiar la altura de la Toolbar
de Toolbar
:
- Cambiar la
height
awrap_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
- Android: crea un servicio que se ejecuta una vez al día
- Cómo crear un diseño de superposición en una vista de lista