HarmonyOS 鸿蒙Next promptAction.openCustomDialog 自定义宽度&圆角

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

HarmonyOS 鸿蒙Next promptAction.openCustomDialog 自定义宽度&圆角

通过promptAction.openCustomDialog 方式弹窗,是否能自定义弹窗的宽度和圆角 
 

2 回复

目前promptAction.openCustomDialog并没有设置宽度和圆角的接口,推荐使用dialogController的方式实现呢,demo如下:

// Index.ets

[@CustomDialog](/user/CustomDialog)

struct CustomDialogExample {

  controller?: CustomDialogController

  cancel: () => void = () => {

  }

  confirm: () => void = () => {

  }

  build() {

    Column() {

      Text('自定义弹窗')

        .fontSize(30)

        .height(100)

      Button('点我关闭弹窗')

        .onClick(() => {

          if (this.controller != undefined) {

            this.controller.close()

          }

        })

        .margin(20)

    }

  }

}

[@Entry](/user/Entry)

[@Component](/user/Component)

struct Index {

  dialogController: CustomDialogController | null = new CustomDialogController({

    builder: CustomDialogExample({

      cancel: ()=> { this.onCancel() },

      confirm: ()=> { this.onAccept() }

    }),

    cancel: this.existApp,

    autoCancel: true,

    alignment: DialogAlignment.Center,

    offset: { dx: 0, dy: -20 },

    gridCount: 2,//设置宽度

    showInSubWindow: false,

    isModal: true,

    customStyle: false,

    cornerRadius: 50,//设置圆角

  })

  // 在自定义组件即将析构销毁时将dialogControlle置空

  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 promptAction.openCustomDialog 自定义宽度&圆角的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,promptAction.openCustomDialog 方法用于打开自定义对话框。关于自定义对话框的宽度和圆角,你可以通过以下方式实现:

  1. 自定义宽度

    • 在创建对话框的布局文件(XML)中,为根布局设置width属性为match_parent或具体dp值,然后通过对话框的Window对象调整其实际宽度。这通常需要在对话框的onCreate方法或show方法之后,通过getWindow().setLayout(width, height)来实现。
  2. 圆角

    • 在布局文件的根布局上应用圆角背景。可以通过设置一个带有圆角的shape drawable作为背景,或者直接在布局文件中使用CardView并设置其cornerRadius属性。

示例代码片段(假设布局文件名为dialog_custom.xml):

<!-- dialog_custom.xml -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/rounded_corners_background"
    android:padding="16dp">
    <!-- Your dialog content here -->
</LinearLayout>

在对话框代码中:

Dialog dialog = new AlertDialog.Builder(context)
    .setView(R.layout.dialog_custom)
    .create();
dialog.getWindow().setLayout(800, WindowManager.LayoutParams.WRAP_CONTENT); // 设置宽度为800dp
dialog.show();

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部