目录

悬浮窗模式,组件大小与显示内容大小不一致

问题现象

全屏模式显示正常,悬浮窗模式下组件大小与显示大小不一致。

背景知识

问题定位

  1. 排查组件是否根据窗口变化进行了动态布局变化。例如:
    Image('')
      .backgroundColor(Color.Blue)
      .height(this.winWidth / this.winHeight == 9 / 16 ? 200 : 400) // 悬浮窗竖向宽高比为9:16,横向为16:9根据是否处于悬浮窗来调整图片大小
      .width('100%')
      .borderRadius(10)
    Text('' + item)
      .width('100%')
      .height(this.winWidth / this.winHeight == 9 / 16 ? 50 : 100) // 悬浮窗竖向宽高比为9:16,横向为16:9根据是否处于悬浮窗来调整Text组件大小
      .fontSize(16)
      .textAlign(TextAlign.Center)
  2. 排查父组件是否固定了宽高,而不是根据百分比自适应的。例如:
    Column{
      // ...
    }
    .height(500)  // 固定宽高

分析结论

  1. 没有对组件进行相应的动态布局以适应窗口变化。
  2. 给父组件设置了固定宽高,父组件设置固定宽高可能会导致窗口变化时内容显示不一致。

修改建议

无论是悬浮窗还是分屏,当应用进入智慧多窗模式时,应用的窗口尺寸发生变化,所以应用需要根据不同的窗口尺寸调整自身布局。并且组件的宽高不必要情况下不建议设置为固定值,可按百分比自适应设置或者不设置宽高让子组件自动撑开。示例如下(示例中图片资源实际使用时需要替换为本地已有图片资源):