【问题标题】:Changing The Color Of Android Top Bar更改 Android 顶部栏的颜色
【发布时间】:2017-09-19 09:00:05
【问题描述】:

我正在尝试更改 Xamarin Forms 可移植类库上顶部/通知栏的颜色。我尝试过使用以下内容:

 MainPage.SetValue(NavigationPage.BarTextColorProperty, Color.FromHex(#424242);

来源:Xamarin.Forms - Change StatusBar Color

我也试过

    public App()
{
    MainPage = new NavigationPage(new Page1())
    {
        BarBackgroundColor = Color.FromHex("#424242"),
        BarTextColor = Color.White,
    };
}

来源:https://theconfuzedsourcecode.wordpress.com/2016/02/12/setting-the-navigationbar-colors-in-xamarin-forms/

在第一个实例/代码中,应用程序启动,但卡在加载屏幕。我也是使用 Xamarin 的新手,所以不确定在哪里可以找到错误日志,因为控制台中没有显示任何错误日志。

在第二个实例/代码中,应用程序为应用程序顶部/通知栏下方的区域着色,而不是通知栏本身。

希望有人能指引我正确的方向。

谢谢

【问题讨论】:

  • 你检查我的答案了吗?有什么问题吗?
  • 嘿,是的,我试过并在 Nexus 模拟器上启动,系统栏仍然默认出现(蓝色)。我重建/清理了解决方案,不确定我做错了什么。顺便说一句,感谢您的帮助:)
  • 你的模拟器的操作系统是哪个安卓版本?
  • 我认为是Android 5.0
  • 那么我的解决方案应该可以工作了,正如您从setStatusBarColor 看到的那样,API 级别 21 支持它。您可以查看我的代码的test result。也可以查看this similar thread on SO

标签: c# android xaml xamarin xamarin.forms


【解决方案1】:

您的第一种方法是尝试更改通知栏的文本颜色(即“前景色”),而您的第二种方法是尝试更改导航栏的背景颜色,既然您说:

在第二个实例/代码中,应用程序为应用程序顶部/通知栏下方的区域着色,而不是通知栏本身。

我猜你想改变系统状态栏的背景颜色,而不是应用程序导航栏的背景颜色。那么你只能在你的android项目中更改它,而不是在PCL中。

比如打开你的MainActivity的android项目,修改OnCreate方法如下:

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.ClearFlags(WindowManagerFlags.TranslucentStatus);
    Window.AddFlags(WindowManagerFlags.DrawsSystemBarBackgrounds);
    Window.SetStatusBarColor(Color.LightPink);
}

【讨论】: