webentwicklung-frage-antwort-db.com.de

Xamarin.Forms - Farbe der Statusleiste ändern

Ich suche, finde aber nicht, ob es möglich ist, die StatusBar-Farbe für jede Plattform von meinem tragbaren Code aus zu ändern? (für Android, iOS & WinPhone 8.1)

public App()
{
    // Change the StatusBar color
    MainPage = new MainPageUser();
}
13
Emixam23

Das ist wirklich ganz einfach.

Die schnelle Antwort

Fügen Sie einfach diese Zeile hinzu

MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);

Oder wenn Sie von einer Navigationsseite erben, können Sie dies mit tun

BarBackgroundColor = Color.Black;

Detaillierte Antwort Sie haben zwei Möglichkeiten. Lass uns sie anschauen.

Option 1

public App()
{
  MainPage = new MainPageUser();

  //Background color
  MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);

  //Title color
  MainPage.SetValue(NavigationPage.BarTextColorProperty, Color.White);
}

Option 2

public App()
{
  MainPage = new MainPageUser();      
}

public class MainPageUser : NavigationPage
{
  public MainPageUser((Page root) : base(root)
  {
     // Background color
     BarBackgroundColor = Color.Black;

     //Title color
     BarTextColor = Color.White;
  }
}

Aber wie Sie wahrscheinlich jetzt feststellen, istdie Statusleiste in iOS oben ebenfalls schwarzund Sie müssen die Info.plist-Datei in Ihrem iOS-Projekt ändern und öffnen (Rechtsklick und wählen Sie "Öffnen mit") mit dem XML-Editor und fügen Sie diese Codezeilen hinzu

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

Ich glaube, es wäre besser, wenn Sie ein wenig plattformspezifischen Code schreiben:

Für Android:

Auf Ihrer MainActivity.cs im Droid-Projekt gleich danach

LoadApplication(new App());

fügen Sie der OnCreate-Methode overriden Folgendes hinzu:

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

So wie:

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
        }
11
mtsfaria

Eine weitere Option für Android: Ändern Sie die Farbe in der Datei \Resources\values\styles.xml (Android-Projekt).

<item name="colorPrimaryDark">#00FF00</item>
5
Tonatio

Vielleicht verstehe ich die Frage nicht, aber ich hoffe, das hilft.

Nachdem ich einige Zeit herumgesucht hatte, um herauszufinden, wie die Farbe der iPhoneX-Statusleiste (das Bit hinter der Kerbe) geändert werden kann, stellte ich fest, dass sie sich automatisch anhand der BackroundColor-Eigenschaft des Stammes ContentPage einstellt.

In Xaml ist das so einfach:

   <ContentPage.BackgroundColor>
        <OnPlatform x:TypeArguments="Color"
                    iOS="Navy"
                    Android="Yellow"
                    />
    </ContentPage.BackgroundColor>

Ich verwende im Wesentlichen den in einer der Antworten hier beschriebenen Ansatz: https://stackoverflow.com/a/46199029/960691 , aber ich ändere ihn ein wenig, indem ich Ihnen einen Code-Schnipsel gebe, auf den ich mich konzentriert habe Ihre individuelle Frage (zumindest denke ich!) 

2
Le Mot Juiced

Mit diesem Ansatz können Sie ihn auf jeder Seite ändern.

Application.Current.MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);
0