HarmonyOS鸿蒙Next上通过pormptAction.openCustomDialog打开的弹框,弹窗中有个输入框,当点击输入框时,整个弹窗被压缩,要怎么处理?

HarmonyOS鸿蒙Next上通过pormptAction.openCustomDialog打开的弹框,弹窗中有个输入框,当点击输入框时,整个弹窗被压缩,要怎么处理? 在使用pormptAction.openCustomDialog实现编辑弹窗功能时,发现在横屏场景下,点击弹窗的输入框,整个弹窗会被压缩,进而导致输入框无法在用户可视区域内。

3 回复

你好

pormptAction.openCustomDialog的第二个入参options可以配置KeyboardAvoidMode属性设置软键盘弹出时的避让模式。

请参考:https://docs.openharmony.cn/pages/v5.1/zh-cn/application-dev/reference/apis-arkui/js-apis-arkui-UIContext.md#opencustomdialog12

默认为KeyboardAvoidMode.DEFAULT,会避让软键盘。

鉴于此,可以将其设置为KeyboardAvoidMode.NONE,不避让软键盘,覆盖弹窗。

更多关于HarmonyOS鸿蒙Next上通过pormptAction.openCustomDialog打开的弹框,弹窗中有个输入框,当点击输入框时,整个弹窗被压缩,要怎么处理?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,通过pormptAction.openCustomDialog打开的弹窗在点击输入框时被压缩,可能是由于软键盘弹出导致布局调整。可以通过设置windowSoftInputMode属性为adjustPanadjustResize来避免弹窗被压缩。具体操作是在config.json中配置windowSoftInputMode属性,或在代码中动态设置。

在HarmonyOS Next中,当使用promptAction.openCustomDialog打开带输入框的弹窗时出现弹窗压缩问题,可以通过以下方式解决:

  1. 设置弹窗的最小高度: 在自定义弹窗布局中,确保为根布局设置minHeight属性,防止软键盘弹出时过度压缩

  2. 调整窗口输入模式: 在调用openCustomDialog时,通过WindowManager.LayoutConfig配置窗口属性:

let layoutConfig: windowManager.LayoutConfig = {
  type: windowManager.WindowType.TYPE_DIALOG,
  inputMode: windowManager.InputMode.ADJUST_PAN // 或 ADJUST_RESIZE
};
promptAction.openCustomDialog({
  layoutConfig: layoutConfig,
  // 其他参数...
});
  1. 针对横屏场景的特殊处理:
  • 设置dialogFixedSizetrue防止自动调整
  • 在自定义布局中使用ScrollContainer包裹内容
  • 为输入框添加onFocus回调,手动调整弹窗位置
  1. 检查布局约束: 确保弹窗内部布局使用弹性约束(Flex布局)或百分比尺寸,避免使用固定尺寸

建议优先尝试ADJUST_PAN模式,该模式会在软键盘弹出时平移窗口内容而非压缩窗口。如果问题仍然存在,可能需要结合具体布局结构调整约束条件。

回到顶部