【发布时间】:2017-03-23 10:49:26
【问题描述】:
我正在构建一个 Xamarin Forms 应用程序,目前在 Android 上。
我正在尝试动态更改应用顶部导航栏的颜色。我使用锁定到 Android 4.1 API 17 的旧手机成功地管理了这一点,但我尝试过的所有其他手机都无法正常工作。我试过了:
三星 SM-G388F - Android 5.1 API 22
谷歌像素 - 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 上找不到任何关于此的信息,也找不到任何有类似问题的人。 有没有其他人经历过这个,如果有,他们是如何解决这个问题的?
【问题讨论】:
标签: xamarin xamarin.android xamarin.forms navigationbar master-detail