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();
}
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/>
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
}
Eine weitere Option für Android: Ändern Sie die Farbe in der Datei \Resources\values\styles.xml
(Android-Projekt).
<item name="colorPrimaryDark">#00FF00</item>
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!)
Mit diesem Ansatz können Sie ihn auf jeder Seite ändern.
Application.Current.MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);