我在移动设备上运行了一个Windows 10 UWP应用。当我在模拟器中运行应用程序时,一切正常。当我在设备(Lumia 550)上运行它时,StatusBar是黑色的,带有黑色字体,状态指示器不可见。
这是某种错误吗?
我知道我可以强制StatusBar有白色背景和黑色,但应用程序的要求是坚持主题(黑色主题黑色StatusBar,Light主题白色)。
如果我创建一个新的空Windows 10应用程序并在设备上运行它,问题是相同的,它不是我的应用程序特有的。
答案 0 :(得分:1)
修改强>
这是一个更恰当的答案:
在Windows 10 Mobile中,状态栏会从最顶层的页面继承它的背景颜色。前景色继承自RequestedTheme
。
这意味着,如果您将网页的背景颜色设置为黑色,并将RequestedTheme
设置为Light
(提供白色前景色),则黑色文本将为黑色。
原帖
你读过这个吗?:https://stenobot.wordpress.com/2015/07/08/uwp-app-development-styling-the-mobile-status-bar/
它可能对你有帮助。
答案 1 :(得分:0)
我有点挣扎。
奇怪的是,当我启动我的应用时,主题(Application.RequestedTheme
)总是 Light,忽略手机上的设置。即使我尝试在构造函数中将其设置为Dark,它也会立即恢复为Light。这可以解释黑色前景色。
我也经历过模拟器和设备之间的不一致。为了解决这个问题,我(在其他答案中建议)设置页面的背景颜色(不是根网格):
<Page
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
... >
</Page>
这样,状态栏至少看起来是可读的。
答案 2 :(得分:0)
如果您使用Light主题项目在黑色背景上获得黑色字体,只需将此行添加到OnLaunched
中的App.xaml.cs
方法:
rootFrame.Background = new SolidColorBrush(Colors.White);
答案 3 :(得分:-1)
只需在App.xaml中添加RequestedTheme="Dark"
答案 4 :(得分:-1)
在您的参考管理器中添加UWP的Windows Mobile扩展
然后在App.XAML.cs
上
protected override void OnLaunched(LaunchActivatedEventArgs e)
添加
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
var statusBar = Windows.UI.ViewManagement.StatusBar.GetForCurrentView();
statusBar.BackgroundColor = Windows.UI.Colors.Green;
statusBar.BackgroundOpacity = 1;
statusBar.ForegroundColor = Colors.White;
}
如果您想在PC版UWP应用上更改标题栏,那么您可以使用此
if (ApiInformation.IsTypePresent("Windows.UI.ViewManagement.ApplicationView"))
{
var titleBar = ApplicationView.GetForCurrentView().TitleBar;
if (titleBar != null)
{
titleBar.ButtonBackgroundColor = Colors.DarkBlue;
titleBar.ButtonForegroundColor = Colors.White;
titleBar.BackgroundColor = Colors.Blue;
titleBar.ForegroundColor = Colors.White;
}
}