Xamarin.Forms.Shell:如何管理StatusBar颜色
我开发了一个小型Xamarin.Forms.Shell应用,但我找不到如何将自定义颜色应用于StatusBar
前景和背景。
我的应用程序使用非常基本的配色方案:
- 为前台和
TabBar
- 白色代表
NavigationBar
和TabBar
的背景
我希望StatusBar
保持相同的颜色,但情况并非如此:
- 在iOS上,
StatusBar
颜色似乎由LightMode/DarkMode 管理
=&>在不管理暗模式的设备上,或者当亮模式处于活动状态时,StatusBar
信息显示良好
=&>但暗模式处于活动状态时情况并非如此,因为这些信息是隐藏的
- 在Android上,
StatusBar
颜色似乎由styles.xaml
文件和android:statusBarColor
属性管理
=>;如果我指定白色,StatusBar
信息不可见,因为也有白色
StatusBar
信息清晰可见
因此我尝试应用给定的解决方案there:
- 这在iOS上不起作用:我仍然有相同的行为,因为
StatusBar
信息不可见,暗模式处于活动状态时也是白色的 - 这似乎适用于Android,但这并不适用于所有Android版本(因为它适用于棉花糖版本)
解决方案
您可以对iOS(黑白状态栏)使用以下方法
public void SetWhiteStatusBar()
{
Device.BeginInvokeOnMainThread(() =>
{
if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0))
{
UIView statusBar = new UIView(UIApplication.SharedApplication.KeyWindow.WindowScene.StatusBarManager.StatusBarFrame);
statusBar.BackgroundColor = UIColor.White;
UIApplication.SharedApplication.KeyWindow.AddSubview(statusBar);
}
else
{
UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
if (statusBar.RespondsToSelector(new ObjCRuntime.Selector("setBackgroundColor:")))
{
statusBar.BackgroundColor = UIColor.White;
}
}
UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.DarkContent, false);
GetCurrentViewController().SetNeedsStatusBarAppearanceUpdate();
});
}
检查我的问题/答案
Xamarin Forms - how to change the status bar color without a navigation page
完整的工作示例在此处https://github.com/georgemichailou/ShaXam
相关文章