我已将状态栏样式设置为Light。当我的MainPage打开时,状态栏文本变为黑色。
我的MainPage是TabbedPage。当我将MainPage设置为具有ContentPage的页面时,状态栏文本将按预期变为白色。
的Info.plist
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
AppDelegate.cs
app.SetStatusBarStyle(UIStatusBarStyle.LightContent, true);
UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;
App.xaml.cs
MainPage = new Views.MainPage();
答案 0 :(得分:0)
如果要将整个应用中的状态栏颜色更改为白色,则需要更改info.plist中的View controller-based status bar appearance
属性,默认情况下会在视图控制器级别设置状态栏样式,而不是应用程序级别。
所以,如果这是你在info.plist中的内容,它应该是正确的,你可能需要在下次部署之前删除应用程序并清理/重建
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
但是,如果您需要更改每Page
的状态栏颜色,则可能需要编写自定义页面渲染器。
答案 1 :(得分:0)
首先,状态栏与导航栏不同。
可以在theme
中设置应用程序的App1.Droid.Resources.values.style.xml
(即颜色)(适用于Android)。
在这里,您需要了解哪个属性定位styles.xml
文件中的哪个值。
This链接包含有关样式化应用程序颜色时的最佳实践的大量信息。
答案 2 :(得分:0)
最简单的解决方案:通过statusBar
获取keyValue
。
删除您在info.plist
。
在FinishedLaunching
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
LoadApplication(new App());
UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBarWindow")).ValueForKey(new NSString("statusBar")) as UIView;
statusBar.BackgroundColor = UIColor.White;
return base.FinishedLaunching(app, options);
}
答案 3 :(得分:0)
问题的原因是我在NavigationPages中附上了子页面。
MainPage.xaml中:
<TabbedPage ...>
<NavigationPage><x:Arguments><local:Page1/></x:Arguments></NavigationPage>
<NavigationPage><x:Arguments><local:Page2/></x:Arguments></NavigationPage>
</TabbedPage>
当我删除了导航页面时,状态栏文本变为白色:
<TabbedPage ...>
<local:Page1/>
<local:Page2/>
</TabbedPage>