HarmonyOS 深浅主题使用背景图片无法跟随切换

在使用 backgroundImage 方法时,图片如果太大(尺寸),深浅切换就不会跟随变化。

demo代码:

import ConfigurationConstant from '@ohos.app.ability.ConfigurationConstant';
let applicationContext = getContext().getApplicationContext();


@Entry
@Component
struct ForceSetExample {
  build() {
    Column() {
      Button('切换深色主题')
        .width('50%').margin('10%').backgroundColor($r('app.color.button_background')).onClick(() => {

        applicationContext.setColorMode(0);
      })


      Button('切换浅色主题')
        .width('50%').margin('10%').onClick(() => {
        applicationContext.setColorMode(ConfigurationConstant.ColorMode.COLOR_MODE_LIGHT);
      })

      Text('Image 方式引入')
      Image($r('app.media.bg_map_02')).width(100).height(100)

      Text('backgroundImage 方式引入').margin({top: '10%'})
      Column().backgroundImage($r('app.media.bg_map_02')).backgroundImageSize({width:100,height:100}).width(100).height(100)
    }.width('100%')
  }
}
HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

手动设置深浅色时增加监听方法主动做修改

参考:

aboutToAppear(): void {
  let envCallback: EnvironmentCallback = {
    onConfigurationUpdated(config) {
      console.info(`envCallback onConfigurationUpdated success: ${JSON.stringify(config)}`);
      let colorMode = config.colorMode;
      console.info("colorMode变化:",colorMode)
    },
    onMemoryLevel(level) {
      console.log('onMemoryLevel level: ${level}');
    }
  };
  try {
  let callbackId = applicationContext.on('environment', envCallback);
  console.log(`callbackId: ${callbackId}`);
} catch (paramError) {
  console.error(`error: ${paramError.code}, ${paramError.message}`);
}
}
分享
微博
QQ
微信
回复
2天前
相关问题
HarmonyOS 背景图片如何填充满组件
742浏览 • 1回复 待解决
HarmonyOS 对于图片或者背景图拉伸
221浏览 • 1回复 待解决
HarmonyOS 如何让背景图居中
199浏览 • 1回复 待解决
HarmonyOS 启动页背景图适配
206浏览 • 1回复 待解决
Canvas中深色/浅色主题切换
621浏览 • 1回复 待解决