HarmonyOS 鸿蒙Next promptAction.openCustomDialog 对应的自定义dialog,能够实现撑满整个屏幕吗?包括顶部statusbar和底部的安全区的高度
HarmonyOS 鸿蒙Next promptAction.openCustomDialog 对应的自定义dialog,能够实现撑满整个屏幕吗?包括顶部statusbar和底部的安全区的高度 现在我设置了自定义的dialog高度为100% 但是实际的布局是从statusbar以下开始布局, 到底部安全区顶部, 并不是整个屏幕的尺寸
/**
* 全局loading弹窗
* @param tips
*/
@Builder
export function loadingDialog(tips?: string) {
RelativeContainer() {
Column() {
Column() {
DeepalPagComponent({
config: {
path: ['toast_loading.pag'],
repeatCount: 0,
startFrame: 0,
scaleMode: PagScaleMode.LetterBox
}
})
.width(SpaceSize.Space36)
.height(SpaceSize.Space36)
if (tips && !EmptyUtils.isEmpty(tips)) { //如果设置了文字的话就显示
Text(tips)
.attributeModifier(deepalTextT12)
.fontColor(deepalTheme.color.text.inverseSecondary)
.margin({
top: SpaceSize.VerticalMargin,
})
}
}
.justifyContent(FlexAlign.Center)
.constraintSize({
minWidth: 96,
minHeight: 96,
maxHeight: 120,
maxWidth: 120,
})
.width(120)
.height(120)
.padding(SpaceSize.Space18)
.borderRadius(SpaceSize.Space6)
.backgroundColor(deepalTheme.color.fill.inverseOpacityPrimary)
.chainMode(Axis.Vertical, ChainStyle.PACKED)
.alignRules({
left: { anchor: "__container__", align: HorizontalAlign.Start },
right: { anchor: "__container__", align: HorizontalAlign.End },
top: { anchor: "__container__", align: VerticalAlign.Top },
bottom: { anchor: "__container__", align: VerticalAlign.Bottom },
bias: { vertical: 1 }
})
}.height(Percent.P100)
.width(Percent.P100)
}
this.loadingDialogId = await promptAction.openCustomDialog({
builder: loadingDialog.bind(this, data.data?.[0]?.msg ?? ''),
backgroundBlurStyle: BlurStyle.NONE,
isModal: false,
offset: {
dx: 0,
dy: 0
},
width: Percent.P100,
height: Percent.P100,
onWillDismiss: (action: DismissDialogAction) => { //目前是点击了返回按键才可以触发
// this.dismiss() //禁止返回关闭
},
})
更多关于HarmonyOS 鸿蒙Next promptAction.openCustomDialog 对应的自定义dialog,能够实现撑满整个屏幕吗?包括顶部statusbar和底部的安全区的高度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
目前一种方案可以使页面有撑满全屏的效果,可以在EntryAbility.ets加上如下的代码,参考文档:
let windowClass: window.Window = windowStage.getMainWindowSync(); // 获取应用主窗口
// 1. 设置窗口全屏
let isLayoutFullScreen = true;
windowClass.setWindowLayoutFullScreen(isLayoutFullScreen)
.then(() => {
console.info('Succeeded in setting the window layout to full-screen mode.');
})
.catch((err: BusinessError) => {
console.error('Failed to set the window layout to full-screen mode. Cause:' + JSON.stringify(err));
});
// 2. 设置状态栏和导航条隐藏
windowClass.setSpecificSystemBarEnabled('status', false)
.then(() => {
console.info('Succeeded in setting the status bar to be invisible.');
})
.catch((err: BusinessError) => {
console.error(`Failed to set the status bar to be invisible. Code is ${err.code}, message is ${err.message}`);
});
另外在promptAction.openCustomDialog ({XXXXXXXXXXXXXXXX})中添加alignment: DialogAlignment.Bottom属性,并将里面的height属性的高度适度增加一下,比如105%(大于100%,根据情况增加),然后弹窗展示内容位置根据实际情况调整一下
更多关于HarmonyOS 鸿蒙Next promptAction.openCustomDialog 对应的自定义dialog,能够实现撑满整个屏幕吗?包括顶部statusbar和底部的安全区的高度的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS中,promptAction.openCustomDialog
对应的自定义 dialog 默认不会撑满整个屏幕,包括顶部 statusbar 和底部的安全区高度。不过,你可以通过调整 dialog 的布局和属性来实现全屏效果。
具体来说,你可以自定义 dialog 的布局文件,在其中使用 MatchParent
来设置宽度和高度。同时,需要确保 dialog 的样式属性允许其扩展到 statusbar 和安全区以外。这通常涉及到修改 dialog 的窗口属性,比如设置 FLAG_FULLSCREEN
或类似标志(注意,HarmonyOS的API可能与Android有所不同,需要查阅相关文档确认具体标志)。
此外,你可能还需要处理 statusbar 的透明度和底部安全区的问题,这可能需要通过调整系统 UI 可见性或设置窗口的 insets 属性来实现。
请注意,由于 HarmonyOS 的系统特性和版本差异,具体实现方式可能会有所不同。建议查阅最新的 HarmonyOS 开发文档,了解如何正确设置 dialog 的布局和属性以实现全屏效果。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html