问题现象
平板上播放视频时,点击全屏播放后,视频下方仍然显示视频标题,视频未真正全屏播放。
问题定位
- 根据问题现象,页面内容拓展到了底部导航栏,标题被导航栏遮挡,判断应用使用了setWindowLayoutFullScreen(true)方法设置窗口为沉浸式,可以应用中全局搜索该方法进行确认。
- 视频全屏播放时,导航栏还存在,可以尝试在视频播放页面搜索setWindowSystemBarEnable和setSpecificSystemBarEnabled方法,确认有无设置导航栏为隐藏状态。
- 视频全屏播放时,避让了下方部分区域,判断视频组件中设置了避让属性导致了这一现象,可以尝试在视频播放页面搜索避让属性padding进行确认。
分析结论
应用在全屏播放视频时设置了沉浸式,同时设置了播放组件避让导航栏安全区域,并且没有设置导航栏的显隐状态为隐藏,导致了如上问题的发生。
修改建议
- 在全屏播放页面查找避让导航栏安全区域的padding属性并去除。
- 在全屏播放页面显示或隐藏时,设置导航栏状态显示或隐藏。
import { BusinessError } from '@kit.BasicServicesKit';
import { window } from '@kit.ArkUI';
@Entry
@Component
struct Index {
isFullScreen: boolean = false;
private context = this.getUIContext().getHostContext();
windowClass: window.Window | undefined = undefined;
@State ButtonMsg: string = '沉浸式全屏';
aboutToAppear(): void {
window.getLastWindow(this.context, (err: BusinessError, window) => {
this.windowClass = window;
console.error(`failed to getLastWindow successfully errCode is: ${err.code}, ${err.message}`);
});
}
// 进入全屏
enterFullscreen() {
if (this.windowClass != undefined) {
this.windowClass.setWindowLayoutFullScreen(!this.isFullScreen);
this.windowClass.setWindowSystemBarEnable([]);
this.isFullScreen = !this.isFullScreen;
}
}
// 退出全屏
exitFullscreen() {
if (this.windowClass != undefined) {
this.windowClass.setWindowLayoutFullScreen(!this.isFullScreen);
this.windowClass.setWindowSystemBarEnable(['status', 'navigation']);
this.isFullScreen = !this.isFullScreen;
}
}
build() {
Column() {
Stack({ alignContent: Alignment.Center }) {
Text('Window show')
.backgroundColor(Color.Black)
.fontColor(Color.White)
.textAlign(TextAlign.Center)
.height('100%')
.width('100%');
Button(this.ButtonMsg)
.onClick(() => {
if (this.isFullScreen) {
this.exitFullscreen();
this.ButtonMsg = '进入沉浸式';
} else {
this.enterFullscreen();
this.ButtonMsg = '退出沉浸式';
}
});
}
.height('100%')
.width('100%');
}
.width('100%')
.height('100%');
}
}