HarmonyOS 鸿蒙Next 自定义@CustomDialog 布局下面留白属性去除方法

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 自定义@CustomDialog 布局下面留白属性去除方法 自定义@CustomDialog 布局下面会有留白,这个通过什么属性去掉

图片


更多关于HarmonyOS 鸿蒙Next 自定义@CustomDialog 布局下面留白属性去除方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

参考这个demo试试,没有留白

// xxx.ets
@CustomDialog
struct CustomDialogExample {
  controller?: CustomDialogController
  cancel: () => void = () => {
  }
  confirm: () => void = () => {
  }
  build() {
    Column() {
      Text('这是自定义弹窗')
        .fontSize(30)
      Text('这是自定义弹窗')
        .fontSize(30)
      Text('这是自定义弹窗')
        .fontSize(30)
      Text('这是自定义弹窗')
        .fontSize(30)
      Text('这是自定义弹窗')
        .fontSize(15)
      Button('点我关闭弹窗')
        .onClick(() => {
          if (this.controller != undefined) {
            this.controller.close()
          }
        })

    }
  }
}
@Entry
@Component
struct CustomDialogUser {
  dialogController: CustomDialogController | null = new CustomDialogController({
    builder: CustomDialogExample({
      cancel: () => { this.onCancel() },
      confirm: () => { this.onAccept() }
    }),
    cancel: this.existApp,
    autoCancel: true,
    onWillDismiss:(dismissDialogAction: DismissDialogAction) => {
      console.info("reason=" + JSON.stringify(dismissDialogAction.reason))
      console.log("dialog onWillDismiss")
      if (dismissDialogAction.reason == DismissReason.PRESS_BACK) {
        dismissDialogAction.dismiss()
      }
      if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) {
        dismissDialogAction.dismiss()
      }
    },
    alignment: DialogAlignment.Center,
    offset: { dx: 0, dy: -20 },
    customStyle: false,
    cornerRadius: 20,
    width: 300,
    height: 200,
    borderWidth: 1,
    borderStyle: BorderStyle.Dashed,//使用borderStyle属性,需要和borderWidth属性一起使用
    borderColor: Color.Blue,//使用borderColor属性,需要和borderWidth属性一起使用
    backgroundColor: Color.White,
    shadow: ({ radius: 20, color: Color.Grey, offsetX: 50, offsetY: 0}),
  })
  // 在自定义组件即将析构销毁时将dialogController置空
  aboutToDisappear() {
    this.dialogController = null // 将dialogController置空
  }

  onCancel() {
    console.info('Callback when the first button is clicked')
  }

  onAccept() {
    console.info('Callback when the second button is clicked')
  }

  existApp() {
    console.info('Click the callback in the blank area')
  }

  build() {
    Column() {
      Button('click me')
        .onClick(() => {
          if (this.dialogController != null) {
            this.dialogController.open()
          }
        }).backgroundColor(0x317aff)
    }.width('100%').margin({ top: 5 })
  }
}

更多关于HarmonyOS 鸿蒙Next 自定义@CustomDialog 布局下面留白属性去除方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


不太清楚这个@CustomDialog怎么设置,但是我觉得这种布局可以使用Popup控制

在HarmonyOS鸿蒙Next系统中,自定义@CustomDialog布局时出现下面留白的问题,通常是由于Dialog的布局设置或Dialog本身的属性导致的。以下是一些可能的解决方法:

  1. 检查Dialog的布局文件: 确保你的布局文件中没有设置不必要的margin或padding,特别是在Dialog的根布局上。例如,检查是否有android:layout_marginBottomandroid:paddingBottom等属性被设置,并将其移除或调整为0。

  2. 调整Dialog的属性: 在创建Dialog时,可以通过设置Dialog的属性来控制其布局。例如,使用setContentView方法设置自定义布局后,检查是否有必要调用setCanceledOnTouchOutside(false)来防止点击外部区域时Dialog消失,这有时会影响布局显示。

  3. Dialog窗口属性调整: 可以通过Dialog的getWindow()方法获取到Window对象,然后调整其属性。例如,使用getWindow().setLayout(int width, int height)方法来设置Dialog的宽度和高度,确保它填满屏幕或按预期显示。

  4. 检查主题和样式: 确认你的应用或Dialog是否使用了特定的主题或样式,这些可能会引入额外的margin或padding。

如果上述方法仍然无法解决问题,请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部