为什么导航栏在 Xamarin.Forms 中在某些设备上不改变颜色?

Why doesn't navigationbar change colour in Xamarin.Forms on some devices?

我正在构建一个 Xamarin Forms 应用程序,目前在 Android。

我正在尝试动态更改应用程序顶部导航栏的颜色。我使用锁定到 Android 4.1 API 17 的旧 phone 成功地做到了这一点,但我已经尝试过所有其他 phone,因为它不起作用。我试过:

三星 SM-G388F - Android 5.1 API 22

Google 像素 - Android 7.1 API 25

Screenshot - Newer phones - does not work - simply inherits page background colour

Screenshot - Older phone - works perfectly

最初我使用 App.xaml 中定义的 DynamicResource 来根据您使用的环境更改 BarBackgroundColour - Live/Test。其他两个属性 BackgroundColor 和 BarTextColor 工作正常。

 <Color x:Key="navBarColour">#F4721C</Color>
  <Style TargetType="NavigationPage">
            <Setter Property="BackgroundColor" Value="{StaticResource pageBackground}"/>
            <Setter Property="BarBackgroundColor" x:Key="navBar" Value="{DynamicResource navBarColour}"/>
            <Setter Property="BarTextColor" Value="{StaticResource textColor}"/>

        </Style>

在 App.xaml.cs 中设置应用加载

    if (Settings.Environment.ToLower() == "live")
        {
            Application.Current.Resources["navBarColour"] = Application.Current.Resources["anglianLightBlue"];
        }
        else
        {
            Application.Current.Resources["navBarColour"] = Application.Current.Resources["red"];
        }

用户还可以在此处的“设置”页面上切换环境:

                App.Current.Resources["navBarColour"] = App.Current.Resources["red"];

我试过将其更改为 StaticResource,并尝试在我的 xaml 中直接将其设置为 Color.Black,但它仍然不起作用 - 我似乎找不到一种在任何地方改变它的方法。

我在 Google 上找不到任何关于此的信息,也找不到任何有类似问题的人。 有没有其他人经历过这个,如果有,他们是如何解决这个问题的?

我没有找到为什么这不起作用,但我确实找到了解决方法。 NavigationBar 正在继承页面背景颜色,因此通过将页面背景更改为您希望栏的颜色,然后在其余内容周围粘贴一个容器 (ScrollView/ContentView) 并为容器的背景着色页面背景颜色这给出了预期的效果。 我仍然想知道为什么这不起作用,但现在这是一个合适的解决方法。