В Xamarin.Forms-Изменение Цвета Строки Состояния
Я ищу, но не могу найти, можно ли изменить цвет строки состояния для каждой платформы из моего портативного кода? (ибо Android, iOS & WinPhone 8.1
)
public App()
{
// Change the StatusBar color
MainPage = new MainPageUser();
}
5 ответов
это довольно легко на самом деле.
быстрый ответ
просто добавьте эту строку
MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);
или если вы наследуете от NavigationPage, вы можете сделать это с помощью
BarBackgroundColor = Color.Black;
подробный ответ!--9--> У вас есть два варианта. Давайте посмотрим на них.
1
public App()
{
MainPage = new MainPageUser();
//Background color
MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);
//Title color
MainPage.SetValue(NavigationPage.BarTextColorProperty, Color.White);
}
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;
}
}
но, как вы, вероятно, заметили сейчас, это строка состояния в iOS сверху также черная и что вам нужно изменить в инфо.plist-файл в вашем проекте ios и откройте его (щелкните правой кнопкой мыши и выберите "Открыть с помощью") с помощью редактора xml и добавить эти строки кода
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
Я считаю, что вам было бы лучше написать немного кода для конкретной платформы:
Для Android:
В класса MainActivity.cs на проекте Droid, сразу после
LoadApplication(new App());
переопределенного метода OnCreate добавьте:
Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 0, 0, 0));
вот так:
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
}
еще один вариант для Android: изменение цвета в файле \Resources\values\styles.xml
(проект Android).
<item name="colorPrimaryDark">#00FF00</item>
может быть, я не понимаю вопрос, но я надеюсь, что это поможет.
после поиска вокруг совсем немного, пытаясь узнать, как изменить цвет строки состояния iPhoneX (бит за выемкой), я узнал, что он автоматически устанавливает себя на основе BackroundColor
свойства корня ContentPage
.
поэтому в Xaml это так просто:
<ContentPage.BackgroundColor>
<OnPlatform x:TypeArguments="Color"
iOS="Navy"
Android="Yellow"
/>
</ContentPage.BackgroundColor>
Я в основном используя подход, описанный в одном из ответов здесь: https://stackoverflow.com/a/46199029/960691, но немного изменив его, предоставив вам фрагмент кода, который я сосредоточил на вашем индивидуальном вопросе (по крайней мере, я думаю!)
используя этот подход, вы можете изменить его на каждой странице.
Application.Current.MainPage.SetValue(NavigationPage.BarBackgroundColorProperty, Color.Black);