比如说 我们代码是这样的
@Entry
@Component
struct Index {
build() {
Column() {
Column() {
Column() {
Text('定标标题')
.fontSize(20)
.fontColor(Color.White)
}
.height(50)
.justifyContent(FlexAlign.Center)
}
.width('100%')
.backgroundColor('#FF0000')
}
.height('100%')
}
}
你预览器上看着确实是没什么问题
但是 我们真机运行一下 会发现 我们顶部还是空出了一条黑的
那么 如果设计要求将这个地方填满 请问阁下又该如何应对?
我们如下图所示 找到这个 EntryAbility.ts
它的生命周期 都是应用全局的
我们要操作的是 onWindowStageCreate 当应用窗口创建完成时 触发的生命周期
改写代码如下
onWindowStageCreate(windowStage: window.WindowStage) {
// 1.获取应用主窗口。
let windowClass = null;
windowStage.getMainWindow((err, data) => {
if (err.code) {
console.error('Failed to obtain the main window. Cause: ' + JSON.stringify(err));
return;
}
windowClass = data;
console.info('Succeeded in obtaining the main window. Data: ' + JSON.stringify(data));
// 2.实现沉浸式效果:设置导航栏、状态栏不显示。
let names = [];
windowClass.setWindowSystemBarEnable(names, (err) => {
if (err.code) {
console.error('Failed to set the system bar to be visible. Cause:' + JSON.stringify(err));
return;
}
console.info('Succeeded in setting the system bar to be visible.');
});
windowClass.setWindowLayoutFullScreen(true)
})
// 3.为沉浸式窗口加载对应的目标页面。
windowStage.loadContent("pages/Index", (err) => {
if (err.code) {
console.error('Failed to load the content. Cause:' + JSON.stringify(err));
return;
}
console.info('Succeeded in loading the content.');
});
}
然后 我们再次启动项目
这样一个沉浸式状态栏就实现了