android - style - ¿Cómo puedo hacer que la barra de estado sea blanca con iconos negros?
themes android gratis (6)
Quiero cambiar el color de la barra de estado de mi aplicación para que sea blanco con iconos negros (en lugar del negro predeterminado con iconos blancos). ¿Hay alguna manera de hacer esto?
Acabo de añadir 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
}
De esta manera, a menos que tenga un control de toda la ROM para personalizarlo manualmente. Lo que te sugiero que hagas es usar un color gris claro para el color de la barra de estado en tu tema, como lo hace Google Drive.
Edición: consulte la respuesta de @Wrekcker ya que esto cambió en Android M.
Es posible hacer la barra de estado blanca con iconos grises, por ejemplo, para SDK> = 23:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowLightStatusBar">true</item>
</style>
en su styles.xml y establezca colorPrimary
en blanco o programáticamente:
getWindow().setStatusBarColor(Color.WHITE);
Tuve el mismo problema.
Noté que cuando uso un diseño normal como RelativeLayout no funciona. Pero cuando lo cambié, provengo de la 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>
<********* ABAJO 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>
solo agrega esto a tu estilo
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
establece android: windowDrawsSystemBarBackgrounds en true * . Esta es una bandera cuya descripción se da a continuación:
Indicador que indica si esta ventana es responsable de dibujar el fondo para las barras del sistema. Si es verdadero y la ventana no está flotando, 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}.
Con Android M (api nivel 23) puedes lograr esto desde el tema con el atributo android:windowLightStatusBar
.
Editar:
Tal como lo mencionó Pdroid, esto también se puede lograr programáticamente:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);