在Windows 10移动应用程序中使用黑色字体的黑色StatusBar

时间:2015-12-15 08:53:24

标签: c# xaml win-universal-app uwp

我在移动设备上运行了一个Windows 10 UWP应用。当我在模拟器中运行应用程序时,一切正常。当我在设备(Lumia 550)上运行它时,StatusBar是黑色的,带有黑色字体,状态指示器不可见。

enter image description here

这是某种错误吗?

我知道我可以强制StatusBar有白色背景和黑色,但应用程序的要求是坚持主题(黑色主题黑色StatusBar,Light主题白色)。

如果我创建一个新的空Windows 10应用程序并在设备上运行它,问题是相同的,它不是我的应用程序特有的。

5 个答案:

答案 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扩展

enter image description here

然后在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;
    }
 }