Je cherche mais je ne trouve pas s'il est possible de changer la couleur de la barre d'état pour chaque plate-forme, à partir de mon code portable. (pour Android, iOS & WinPhone 8.1
)
public App()
{
// Change the StatusBar color
MainPage = new MainPageUser();
}
La réponse rapide
Il suffit d'ajouter cette ligne
MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);
Ou si vous héritez d'une NavigationPage, vous pouvez le faire avec
BarBackgroundColor = Color.Black;
Réponse détaillée Vous avez deux options. Permet de les regarder.
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;
}
}
Mais comme vous le remarquerez probablement maintenant, c’estque la barre d’état dans iOS du haut est également noireet que vous devez modifier le fichier Info.plist de votre projet ios et l’ouvrir et choisissez "ouvrir avec") avec l'éditeur xml et ajoutez ces lignes de code
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Je pense que vous feriez mieux d'écrire un peu de code spécifique à la plateforme:
Pour Android:
Sur votre MainActivity.cs sur le projet Droid, juste après
LoadApplication(new App());
de la méthode OnCreate remplacée, ajoutez:
Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 0, 0, 0));
Ainsi:
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
}
Autre option pour Android: changez la couleur dans le fichier \Resources\values\styles.xml
(projet Android).
<item name="colorPrimaryDark">#00FF00</item>
Peut-être que je ne comprends pas la question, mais j'espère que cela aidera.
Après avoir un peu cherché à savoir comment changer la couleur de la barre d'état iPhoneX (le bit derrière l'encoche), j'ai découvert qu'il se définit automatiquement en fonction de la propriété BackroundColor
de la racine ContentPage
.
Donc, dans Xaml, c'est aussi simple que cela:
<ContentPage.BackgroundColor>
<OnPlatform x:TypeArguments="Color"
iOS="Navy"
Android="Yellow"
/>
</ContentPage.BackgroundColor>
J'utilise essentiellement l'approche décrite dans l'une des réponses suivantes: https://stackoverflow.com/a/46199029/960691 , mais je la modifie un peu en vous donnant un extrait de code sur lequel je me suis concentré. votre question individuelle (du moins je pense!)
En utilisant cette approche, vous pouvez le changer sur chaque page.
Application.Current.MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);