如何在Xamarin形式的android和ios中更改状态栏颜色(主要为深色和主要)?

时间:2019-07-20 07:31:38

标签: xamarin.forms

我正在通过更改xamarin表单中样式的颜色来更改状态栏颜色

   <item name="colorPrimaryDark">#fc3884</item>//android
   UIBarButtonItem.Appearance.TintColor = UIColor.FromRGB(232, 62,140);//ios
        UITabBar.Appearance.BarTintColor=UIColor.FromRGB(232, 62, 140); 

但是在我的项目中,我正在使用第三方API,导航到新页面(第三方)时也必须更改状态栏颜色。如何实现此目的?

1 个答案:

答案 0 :(得分:1)

对于android,您可以使用依赖项服务来更改状态栏的颜色。您可以在android项目中设置以下函数,然后从.net标准项目中调用它。

public bool ChangeStatusbarColor(Color color)
{
     bool colorChanged = false;
     try
     {
 #pragma warning disable CS0618 // Type or member is obsolete
        var context = Forms.Context as FormsAppCompatActivity;
        context.SetStatusBarColor(color.ToAndroid());
 #pragma warning restore CS0618 // Type or member is obsolete
            colorChanged = true;
     }
     catch { }
        return colorChanged;
}

对于IOS,您可以使用以下功能执行类似的操作:

UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
if (statusBar.RespondsToSelector(new ObjCRuntime.Selector("setBackgroundColor:")))
{
    statusBar.BackgroundColor = color.ToUIColor();
}