@Sorskoot 的回答对我帮助很大,但我仍然只花了一个小时寻找如何更改状态栏的背景颜色。所以我会分享(因为启用状态栏和设置它的颜色通常是一起的):
下面的代码显示了状态栏(或者顾名思义
向消息队列提交请求以执行此操作)
var s = Windows.UI.ViewManagement.StatusBar.getForCurrentView();
s.showAsync();
如果你尝试这样设置颜色
// THIS IS WRONG
s.backgroundColor = 'red';
s.backgroundColor = '#A65959';
这行不通,会抛出错误:
0x800a13ec - JavaScript runtime error: Could not convert object to struct: object missing expected property 'a'
这是因为 s.backgroundColor 是
不是 HTML 对象,而是 WinRT 运行时对象,因此我们需要使用“颜色”结构
WinRT,与 HTML/JS 颜色概念关系不大。
但首先让我们先修复透明度(不透明度)。
默认情况下,该栏的 bg 层是完全透明的。设置它的不透明度
到 1.0 使其完全不透明。
TL;DR;
// THIS IS RIGHT
s.backgroundOpacity = 0.99;
s.backgroundColor = Windows.UI.ColorHelper.fromArgb(255, 0xA6, 0x59, 0x59);
s.foregroundColor = Windows.UI.Colors.lightGray;
上面我们使用帮助类来构建一个 WinRT Color 结构。注意不透明度
在辅助参数中的范围为 0-255。然而在 s.backgroundOpacity 它是
浮动范围 [0..1] >:o
Windows.UI.Colors 中有一堆预定义的颜色常量,但是请注意
camelCasing(例如lightGray),不同于 HTML/JS 颜色命名约定)