HarmonyOS 鸿蒙Next customDialog 如何禁用掉侧滑返回手势
HarmonyOS 鸿蒙Next customDialog 如何禁用掉侧滑返回手势
隐私政策弹窗,只有点击 拒绝 或 同意 时候,Dialog才可以关闭,侧滑返回手势,不想让Dialog关闭掉。onWillDissmiss可以拿到 DissmissReason,但是无法阻止Dialog关闭吧?
可以参考一下demo:
import { process } from '[@kit](/user/kit).ArkTS';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct MyComponent {
// 只有被[@Entry](/user/Entry)装饰的组件才可以调用页面的生命周期
onBackPress() {
console.info('Index onBackPres这是返回来了吗');
AlertDialog.show(
{
title: '确定退出', // 标题
message: '是否要退出?', // 内容
autoCancel: false, // 点击遮障层时,是否关闭弹窗。
alignment: DialogAlignment.Bottom, // 弹窗在竖直方向的对齐方式
offset: { dx: 0, dy: -20 }, // 弹窗相对alignment位置的偏移量
primaryButton: {
value: '取消',
action: () => {
console.info('Callback when the first button is clicked');
// ApplicationAbility.getInstance()?.quitApp();
}
},
secondaryButton: {
value: '确定',
fontColor: '#D94838',
action: () => {
console.info('Callback when the second button is clicked这是哈哈啊');
let pro = new process.ProcessManager();
pro.exit(0)
// app.terminate()
}
},
cancel: () => { // 点击遮障层关闭dialog时的回调
console.info('Closed callbacks');
}
}
)
return true // 返回true表示页面自己处理返回逻辑,不进行页面路由;返回false表示使用默认的路由返回逻辑,不设置返回值按照false处理
}
// 组件生命周期
aboutToAppear() {
console.info('MyComponent aboutToAppear');
}
// 组件生命周期
aboutToDisappear() {
console.info('MyComponent aboutToDisappear');
}
build() {
Column() {
Button('delete Child')
.margin(20)
.onClick(() => {
// this.showChild = false;
})
}
}
}
在HarmonyOS(鸿蒙)系统中,自定义对话框(customDialog)默认可能会继承系统的一些手势行为,包括侧滑返回。为了禁用掉这个侧滑返回手势,你需要对对话框的窗口属性进行设置。
具体操作可以通过以下步骤进行:
-
获取对话框窗口:在对话框显示后,通过
getWindow()
方法获取对话框的Window
对象。 -
设置窗口属性:使用
setWindowAnimations(0)
和setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE)
来尝试改变对话框的默认行为。重要的是,要重新设置FLAG_DIM_BEHIND
等需要的标志,以确保对话框的显示不受影响。 -
禁用侧滑返回:通过
setWindowFeatures(WindowManager.LayoutParams.FEATURE_NO_TITLE)
移除标题栏,并尝试使用setCancelable(false)
和setCanceledOnTouchOutside(false)
来禁止通过触摸外部取消对话框,这有时也能间接影响侧滑返回行为。 -
自定义动画:如果上述方法无效,可以尝试为对话框设置自定义的进入和退出动画,确保动画中不包含侧滑效果。
请注意,这些步骤可能需要根据你的具体需求进行调整。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html