Если ваше приложение Xamarin Forms использует только одно действие, то это довольно просто.Это решение для Lollipop и версий после.Вы можете сделать это, используя специфический для платформы код Android:
public class StatusBarStyleManager : IStatusBarStyleManager
{
public void SetStatusBarColor(Android.Graphics.Color color)
{
if (Build.VERSION.SdkInt >= BuildVersionCodes.M)
{
Device.BeginInvokeOnMainThread(() =>
{
var currentWindow = GetCurrentWindow();
currentWindow.DecorView.SystemUiVisibility = (StatusBarVisibility)SystemUiFlags.LightStatusBar;
currentWindow.SetStatusBarColor(color);
});
}
}
Window GetCurrentWindow()
{
//Note this is a nuget package for retrieving the activity.
var window = CrossCurrentActivity.Current.Activity.Window;
// clear FLAG_TRANSLUCENT_STATUS flag:
window.ClearFlags(WindowManagerFlags.TranslucentStatus);
// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
return window;
}
}
Затем просто используйте эту реализацию на своих страницах, чтобы установить их конкретные цвета строки состояния, когда они появляются.
Вдохновленный этой статьей, когда янужно это в моих собственных проектах: https://evgenyzborovsky.com/2018/08/20/dynamically-changing-the-status-bar-appearance-in-xamarin-forms/