insertar - Formas de Xamarin: personalizar el color de la barra de estado de estilo de material de Android
imagen de fondo xamarin forms (4)
Debes seguir este tutorial para tener éxito.
Básicamente, debe usar FormsAppCompatActivity
lugar de FormsApplicationActivity
y Theme.AppCompat.Light.NoActionBar
lugar de Theme.Material.Light
.
He habilitado el tema Material en mi proyecto Xamarin.Forms con el siguiente código, pero en Android (Lollipop y Marshmallow) la barra de estado superior (donde se encuentran el reloj, la señal, la batería, etc.) no cambia. Siempre permanece negro. Ya leí muchos foros y blogs, probé muchas combinaciones, pero no puedo obtener esta barra de estado coloreada como quiero.
MainActivity.cs
[Activity(Theme = "@style/MyTheme", Label = "MyApp", Icon = "@drawable/AppIcon", ScreenOrientation = ScreenOrientation.Portrait, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
values-v21 / style.xml
<resources>
<style name="MyTheme.Splash" parent="android:Theme.Material.Light">
<item name="android:windowBackground">@drawable/SplashScreen</item>
<item name="android:windowNoTitle">true</item>
</style>
<style name="MyTheme" parent="android:Theme.Material.Light">
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:colorPrimary">@color/Brand</item>
<item name="android:textColorPrimary">@color/White</item>
<item name="android:statusBarColor">@color/BrandDark</item>
<item name="android:colorPrimaryDark">@color/BrandDark</item>
<item name="android:colorAccent">@color/Brand</item>
<item name="android:textColor">@color/Brand</item>
</style>
</resources>
valores / colors.xml
<resources>
<color name="SplashBackground">#f78b2b</color>
<color name="Brand">#f78b2b</color>
<color name="BrandDark">#e47108</color>
<color name="White">#ffffff</color>
</resources>
¡Gracias por cualquier ayuda!
Otra solución más simple, en el método OnCreate de MainActivity.cs agrega:
Window window = this.Window; window.ClearFlags(WindowManagerFlags.TranslucentStatus); window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds); window.SetStatusBarColor(Android.Graphics.Color.Rgb(116, 181, 13));
Una traducción de la versión equivalente de Java:
if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
{
// clear FLAG_TRANSLUCENT_STATUS flag:
Window.ClearFlags(Android.Views.WindowManagerFlags.TranslucentStatus);
//Window.ClearFlags(WindowManager.Pa WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
Window.AddFlags(Android.Views.WindowManagerFlags.DrawsSystemBarBackgrounds);
// finally change the color
Window.SetStatusBarColor(new Color(ContextCompat.GetColor(this, Resource.Color.colorPrimaryDark)));
}
Tenía lo mismo que la respuesta aceptada. Estaba trabajando en uno de nuestros proyectos pero no en el otro.
No he visto una solución a este problema en particular, así que estoy siendo el primero aquí.
Si ha declarado sus permisos de uso en el assemblyInfo.cs en lugar del manifiesto, la barra de estado no funcionará como se espera.
Incluso si lo hace funcionar configurándolo individualmente para cada actividad, todavía no funciona cuando realiza la transición a actividades. Entonces, la única forma es mover las declaraciones de permiso de uso al manifiesto.
¡Espero poder ayudar a alguien!