HarmonyOS 鸿蒙Next promptAction.openCustomDialog 自定义宽度&圆角
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
方法用于打开自定义对话框。关于自定义对话框的宽度和圆角,你可以通过以下方式实现:
-
自定义宽度:
- 在创建对话框的布局文件(XML)中,为根布局设置
width
属性为match_parent
或具体dp值,然后通过对话框的Window
对象调整其实际宽度。这通常需要在对话框的onCreate
方法或show
方法之后,通过getWindow().setLayout(width, height)
来实现。
- 在创建对话框的布局文件(XML)中,为根布局设置
-
圆角:
- 在布局文件的根布局上应用圆角背景。可以通过设置一个带有圆角的
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