APP设置了沉浸式布局,在切换主题颜色的时候,最顶部的状态栏字体颜色不会变化,请问该怎么处理?下面的代码时我们的设置方式:
private checkDarkMode(darkModeConfig: DarkModeSettingsConfig): void {
AppStorage.setOrCreate<DarkModeSettingsConfig>('darkModeConfig', darkModeConfig);
let applicationContext = getContext(this).getApplicationContext();
let colorMode: ConfigurationConstant.ColorMode = ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET;
if (darkModeConfig.switchType === DarkModeType.FOLLOW_UP) {
colorMode = (getContext(this) as common.UIAbilityContext).config.colorMode ||
ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT;
} else if (darkModeConfig.switchType === DarkModeType.DARK) {
colorMode = ConfigurationConstant.ColorMode.COLOR_MODE_DARK;
} else {
colorMode = ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT;
}
AppStorage.setOrCreate('currentColorMode', colorMode);
applicationContext.setColorMode(colorMode);
try {
AppUtil.getMainWindow()?.setWindowSystemBarProperties({
statusBarContentColor: colorMode === ConfigurationConstant.ColorMode.COLOR_MODE_DARK ? '0xffffffff' : '0x00000000',
}, (err: BusinessError) => {
const errCode: number = err.code;
if (errCode) {
console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(err));
return;
}
console.info('Succeeded in setting the system bar properties.');
});
} catch (exception) {
console.error('Failed to set the system bar properties. Cause: ' + JSON.stringify(exception));
}
}
目前设置状态栏颜色是使用窗口的API,调整维度是从整个窗口进行调整。需要做到页面的级别的话就需要在页面的生命周期中进行调整控制,在需要改变的页面直接调用setWindowSystemBarProperties方法。 可以参考官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-window-0000001820880785\#ZH-CN\_TOPIC\_0000001811317218\_\_setwindowsystembarproperties9
示例代码如下: