HarmonyOS鸿蒙Next中如何解决CustomDialogController设置透明背景失效的问题

HarmonyOS鸿蒙Next中如何解决CustomDialogController设置透明背景失效的问题

【问题现象】

在自定义弹窗中设置透明背景色属性没有生效:

点击放大

期望达成的效果:

点击放大

问题代码如下:

private customDialogController: CustomDialogController = new CustomDialogController({
  autoCancel: false,
  backgroundColor: Color.Transparent, // 设置弹窗背景为透明色
  builder: BackPressDialog(),
  alignment: DialogAlignment.Center,
})

【背景知识】

CustomDialog:自定义弹窗,通过CustomDialogController类显示自定义弹窗。

【解决方案】

如果同时设置了backgroundColor和builder内容构造器的背景色,则backgroundColor会被内容构造器的背景色覆盖,使backgroundColor透明色不生效。

针对这个问题使用customStyle属性,设置弹窗容器样式是否自定义,设置为true,弹窗背景色为透明色:

private customDialogController: CustomDialogController = new CustomDialogController({
  autoCancel: false,
  backgroundColor: Color.Transparent,
  builder: BackPressDialog(),
  alignment: DialogAlignment.Center,
  customStyle: true // 设置为true,使弹窗背景色为透明色 
})

更多关于HarmonyOS鸿蒙Next中如何解决CustomDialogController设置透明背景失效的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS鸿蒙Next中如何解决CustomDialogController设置透明背景失效的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在CustomDialogController中设置透明背景色失效时,需将customStyle属性设置为true。修改代码如下:

private customDialogController: CustomDialogController = new CustomDialogController({
  autoCancel: false,
  backgroundColor: Color.Transparent,
  builder: BackPressDialog(),
  alignment: DialogAlignment.Center,
  customStyle: true // 设置为true,使弹窗背景色为透明色
})
回到顶部