Quiero cambiar el color de la barra de estado de mi aplicación para que sea blanca con iconos negros (en lugar del negro predeterminado con iconos blancos). ¿Hay alguna forma de hacer esto?
Quiero cambiar el color de la barra de estado de mi aplicación para que sea blanca con iconos negros (en lugar del negro predeterminado con iconos blancos). ¿Hay alguna forma de hacer esto?
Respuestas:
Con Android M (api nivel 23) puede lograr esto desde el tema con android:windowLightStatusBar
atributo.
Editar:
Tal como mencionó Pdroid, esto también se puede lograr mediante programación:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
Es posible hacer la barra de estado blanca con iconos grises, por ejemplo, de esta manera para SDK> = 23 (ver documentos ):
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowLightStatusBar">true</item>
</style>
en su styles.xml y configúrelo colorPrimary
en blanco o programáticamente:
getWindow().setStatusBarColor(Color.WHITE);
SDK >= 23
pero @being_sohelkhan por alguna razón ha editado mi respuesta original ... stackoverflow.com/posts/46897243/revisions
Acabo de agregar a mi actividad en Kotlin:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.decorView.systemUiVisibility =View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
window.statusBarColor = Color.WHITE
}
solo agrega esto a tu estilo
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
establezca android: windowDrawsSystemBarBackgrounds en verdadero * . Esta es una bandera cuya descripción se da a continuación:
Bandera que indica si esta Ventana es responsable de dibujar el fondo de las barras del sistema. Si es verdadero y la ventana no es flotante, las barras del sistema se dibujan con un fondo transparente y las áreas correspondientes en esta ventana se rellenan con los colores especificados en {@link android.R.attr # statusBarColor} y {@link android.R .attr # navigationBarColor}. Corresponde a {@link android.view.WindowManager.LayoutParams # FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS}.
Puedes usarlo de esta manera en Kotlin
window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
Asegúrate de llamarlo onCreate()
antessetContentView()
No hay manera de hacerlo a menos que tenga un control de toda la rom para personalizarla manualmente. Lo que te sugiero que hagas es que uses un color gris claro para el color de la barra de estado a través de tu tema como lo hace Google Drive.
Editar: consulte la respuesta de @Wrekcker ya que esto cambió en Android M.
Tuve el mismo problema.
Noté que cuando uso un diseño normal como RelativeLayout, no funciona. Pero cuando cambié a esa biblioteca de soporte como CordinatorLayout, finalmente comenzó a funcionar. Prueba esto.
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".Activities.Activity">
<android.support.v7.widget.Toolbar
android:id="@+id/tb_activity"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.CoordinatorLayout>
<********* DEBAJO DE OTROS ATRIBUTOS ************>
estilos
<resources>
<!-- 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>
<style name="AppTheme.NoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
Y en el manifiesto
<activity
android:name=".Activities.MyActivity"
android:label="Activity"
android:theme="@style/AppTheme.NoActionBar">
</activity>