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

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

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

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

阅读 478
1 个回答

两者无优势差别,只是多开辟一种调用方式。建议直接采用 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()
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进