Saltar al contenido

Xamarin.Forms – Cambiar el color de la barra de estado

Solución:

Creo que sería mejor que escribiera un poco de código específico de la plataforma:

Para Android:

En su MainActivity.cs en el proyecto Droid, justo después

LoadApplication(new App());

del método OnCreate anulado, agregue:

Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 0, 0, 0));

Al igual que:

protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;

            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);            
            LoadApplication(new App());
            Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 0, 0, 0)); //here
        }

Regresaré a esta respuesta años después para solucionarlo porque mi respuesta había sido incorrecta a pesar de que había sido aceptada como la respuesta correcta. Ahora lo he arreglado.

Había leído mal la pregunta para querer cambiar la barra de navegación o que funcionaba de manera diferente en Android en ese momento.

Creo que al menos esta es una respuesta mucho mejor y debería ser una mejor ayuda para cambiar el color de la barra de navegación en Android e iOS.

Agregue este código a su proyecto Xamarin.Forms

public interface IStatusBarPlatformSpecific
{
  void SetStatusBarColor(Color color);
}

agregue esta clase a su proyecto de Android

[assembly: Dependency(typeof(MyDemo.Droid.CustomRenderers.Statusbar))]
namespace MyDemo.Droid.CustomRenderers
{
    public class Statusbar : IStatusBarPlatformSpecific
    {
       public Statusbar()
       {
       }

       public void SetStatusBarColor(Color color)
       {
         // The SetStatusBarcolor is new since API 21
         if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop)
        {
          var androidColor = color.AddLuminosity(-0.1).ToAndroid();
         //Just use the plugin
 CrossCurrentActivity.Current.Activity.Window.SetStatusBarColor(androidColor);
         }
         else
         {
          // Here you will just have to set your 
          // color in styles.xml file as shown below.
         }
       }
   }
}

Agregue este CurrentActivityPlugin a sus proyectos

Ahora puede cambiar el color en su proyecto de formularios de esta manera

var statusbar = DependencyService.Get<IStatusBarPlatformSpecific>();
statusbar.SetStatusBarColor(Color.Green);

Nota la declaración else anterior. Si está utilizando una versión de compilación anterior a 21, deberá codificar su color en styles.xml en su proyecto de Android de esta manera

<?xml version="1.0" encoding="utf-8" ?>
<resources>
   <style name="MainTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar">  
      <item name="android:statusBarColor">#544054</item>  
   </style>
</resources>

Para iOS es similar

agregue esto a su Info.plist (más documentos aquí)

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

y agregue este código a su método SetStatusBarColor en la versión iOS de la clase StatusBar

UIView statusBar = UIApplication.SharedApplication.ValueForKey(
new NSString("statusBar")) as UIView;

 if (statusBar != null && statusBar.RespondsToSelector(
 new  ObjCRuntime.Selector("setBackgroundColor:")))
 {
   // change to your desired color 
   statusBar.BackgroundColor = Color.FromHex("#7f6550").ToUIColor(); 
 }

Escribí una publicación de blog más detallada sobre cómo establecer el color de la barra de estado de Xamarin.Forms si alguien está interesado. Solo habla de Android e iOS, pero debería darte una idea de qué hacer con otras plataformas.

Otra opción para Android: cambiar el color del archivo Resourcesvaluesstyles.xml (Proyecto de Android).

<item name="colorPrimaryDark">#00FF00</item>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *