HarmonyOS promptAction和uiContext.getPromptAction中自定义弹窗差异

promptAction.openCustomDialog 无法让弹窗的内容撑满全屏,

而有另一个弹窗方法 uiContext.getPromptAction().openCustomDialog 可以让弹窗内容撑满全屏

想问一下这两套 promptAction 有什么差异? 自定义弹窗的话,官方有没有更推荐使用哪种 promptAction?

HarmonyOS
2024-12-24 16:44:59
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

两者无优势差别,只是多开辟一种调用方式。建议直接采用 promptAction.openCustomDialog,不需要链式跟踪查找,目前promptAction.openCustomDialog 设置width(‘100%’), 系统会默认所在窗口宽度 - 左右 16vp。需要自行在此基础上调大/调小,让内容撑满全屏,可参考demo如下:

import promptAction from '@ohos.promptAction';
import display from '@ohos.display'

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Button('点我').onClick(() => {
      DialogUtils.show(this)
    })
  }
}

@Component
export struct TestComponent {
  build() {
    Row() {
      Text('弹窗内组件1弹窗内组件2弹窗内组件3弹窗内组件4弹窗内组件5弹窗内组件').height(200).textAlign(TextAlign.Center)
    }
  }
}

export class DialogUtils {
  public static createOption(builder: CustomBuilder) {
    const option: promptAction.CustomDialogOptions = {
      builder: builder,
      isModal: true,
      alignment: DialogAlignment.Bottom,
      cornerRadius: 0,
      backgroundColor: Color.Red,
      width: "110%",
      autoCancel: false,
    }
    return option
  }

  public static show(context: Object,) {
    promptAction.openCustomDialog(DialogUtils.createOption(buildComp.bind(context)))
  }
}

@Builder
function buildComp() {
  TestComponent()
}
分享
微博
QQ
微信
回复
2024-12-24 18:21:26
相关问题
promptAction.openCustomDialog 自定义弹窗
498浏览 • 1回复 待解决
如何在自定义弹窗再次弹窗
2579浏览 • 1回复 待解决
自定义弹窗自定义转场动画
1368浏览 • 1回复 待解决
HarmonyOS 自定义弹窗选择
672浏览 • 1回复 待解决
HarmonyOS 自定义弹窗CustomDialog
178浏览 • 1回复 待解决
使用自定义弹窗实现分享弹窗
786浏览 • 1回复 待解决
HarmonyOS 全局自定义弹窗demo
594浏览 • 1回复 待解决