android - cambiar - colorprimarydark programmatically
Cambie el color de la barra de estado con AppCompat ActionBarActivity (6)
Aplicando
<item name="android:statusBarColor">@color/color_primary_dark</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
en
Theme.AppCompat.Light.DarkActionBar
no funcionó para mí.
¿Cuál fue el truco, dar
colorPrimaryDark
como de costumbre junto con
android:colorPrimary
en styles.xml
<item name="android:colorAccent">@color/color_primary</item>
<item name="android:colorPrimary">@color/color_primary</item>
<item name="android:colorPrimaryDark">@color/color_primary_dark</item>
y en ambientación
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
Window window = this.Window;
Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
}
no tuvo que establecer el color de la barra de estado en el código.
En una de mis actividades, cambié el color de la barra de herramientas usando la
Palette
.
Pero en dispositivos 5.0 que usan
ActionBarActivity
el color de la
status bar
es el color de mi
colorPrimaryDark
en mi tema de actividad, por lo que tengo 2 colores muy diferentes y no se ve bien.
Me doy cuenta de que en 5.0 puedes usar
Window.setStatusBarColor()
pero
ActionBarActivity
no tiene esto.
entonces mi pregunta es en 5.0 ¿cómo puedo cambiar el color de la barra de estado con
ActionBarActivity
?
Gracias por las respuestas anteriores, con la ayuda de ellos, después de cierta I + D para la aplicación MVVMCross xamarin.android, a continuación funcionó
Indicador especificado para la actividad en el método OnCreate
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
this.Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
}
Para cada MvxActivity, el tema se menciona a continuación
[Activity(
LaunchMode = LaunchMode.SingleTop,
ScreenOrientation = ScreenOrientation.Portrait,
Theme = "@style/Theme.Splash",
Name = "MyView"
)]
Mi SplashStyle.xml se ve a continuación
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Splash" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:statusBarColor">@color/app_red</item>
<item name="android:colorPrimaryDark">@color/app_red</item>
</style>
</resources>
Y tengo V7 appcompact referido.
Hay varias formas de cambiar el color de la barra de estado.
1) Usando el styles.xml. Puede usar el atributo android: statusBarColor para hacer esto de manera fácil pero estática.
Nota: También puede usar este atributo con el tema Material.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="AppTheme.Base">
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
</resources>
2) Puede hacerlo dinámicamente utilizando el método setStatusBarColor (int) en la clase Window. Pero recuerde que este método solo está disponible para API 21 o superior. Así que asegúrese de verificar eso, o su aplicación seguramente se bloqueará en dispositivos inferiores.
Aquí hay un ejemplo de trabajo de este método.
if (Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(getResources().getColor(R.color.primaryDark));
}
donde primaryDark es el tinte 700 del color primario que estoy usando en mi aplicación. Puede definir este color en el archivo colors.xml.
Pruébalo y avísame si tienes alguna pregunta. Espero eso ayude.
No creo que el color de la barra de estado se haya implementado en AppCompat todavía. Estos son los atributos que están disponibles:
<!-- ============= -->
<!-- Color palette -->
<!-- ============= -->
<!-- The primary branding color for the app. By default, this is the color applied to the
action bar background. -->
<attr name="colorPrimary" format="color" />
<!-- Dark variant of the primary branding color. By default, this is the color applied to
the status bar (via statusBarColor) and navigation bar (via navigationBarColor). -->
<attr name="colorPrimaryDark" format="color" />
<!-- Bright complement to the primary branding color. By default, this is the color applied
to framework controls (via colorControlActivated). -->
<attr name="colorAccent" format="color" />
<!-- The color applied to framework controls in their normal state. -->
<attr name="colorControlNormal" format="color" />
<!-- The color applied to framework controls in their activated (ex. checked) state. -->
<attr name="colorControlActivated" format="color" />
<!-- The color applied to framework control highlights (ex. ripples, list selectors). -->
<attr name="colorControlHighlight" format="color" />
<!-- The color applied to framework buttons in their normal state. -->
<attr name="colorButtonNormal" format="color" />
<!-- The color applied to framework switch thumbs in their normal state. -->
<attr name="colorSwitchThumbNormal" format="color" />
(Desde / sdk / extras / android / support / v7 / appcompat / res / values / attrs.xml )
No estoy seguro de entender el problema.
Si desea cambiar el color de la barra de estado mediante programación (y siempre que el dispositivo tenga Android 5.0),
puede
usar
Window.setStatusBarColor()
.
No debería hacer una diferencia si la actividad se deriva de
Activity
o
ActionBarActivity
.
Solo intenta hacer:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.BLUE);
}
Acabo de probar esto con
ActionBarActivity
y funciona bien.
Nota: No es necesario establecer el indicador
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
programación si su archivo de estilos
values-v21
ya lo tiene configurado, a través de:
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
Prueba esto, lo usé y funciona muy bien con v21.
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="colorPrimaryDark">@color/blue</item>
</style>