HarmonyOS鸿蒙Next中想问一下,键盘避让只能让所有页面进行避让吗,是否能设置有的页面避让,有的页面不避让。
HarmonyOS鸿蒙Next中想问一下,键盘避让只能让所有页面进行避让吗,是否能设置有的页面避让,有的页面不避让。 【问题描述】:
想问一下,键盘避让只能让所以页面进行避让吗,是否能设置有的页面避让,有的页面不避让。
场景:想实现有的页面避让,有的页面不避让;
键盘弹出不避让的话会压缩页面的尺寸:如图

【问题现象】:咨询问题
【版本信息】:ide 6.0 ;api:20
【复现代码】:无
【尝试解决方案】:未解决,
更多关于HarmonyOS鸿蒙Next中想问一下,键盘避让只能让所有页面进行避让吗,是否能设置有的页面避让,有的页面不避让。的实战教程也可以访问 https://www.itying.com/category-93-b0.html
可以设置部分页面避让。在HarmonyOS Next中,通过设置UIAbility的windowSoftInputMode属性实现。例如,在module.json5配置文件中,为特定UIAbility设置adjustPan或adjustResize模式控制键盘避让行为。不同UIAbility可配置不同模式。
在HarmonyOS Next中,键盘避让行为是可以通过setKeyboardAvoidMode API进行页面级控制的,并非只能全局统一设置。
根据你提供的API文档链接,setKeyboardAvoidMode方法允许为当前窗口设置不同的键盘避让模式。主要模式包括:
- OFF:键盘弹出时不避让,会压缩页面尺寸(你图中所示的情况)
- RESIZE:键盘弹出时调整窗口大小进行避让
- PAN:键盘弹出时平移窗口内容进行避让
实现方式:
你可以在需要控制键盘避让行为的页面中,通过window对象调用此API。例如,在某个页面的aboutToAppear生命周期中设置不避让:
import { window } from '@kit.ArkUI';
// 设置当前页面键盘弹出时不避让
window.getLastWindow(this.context).then(win => {
win.setKeyboardAvoidMode(window.KeyboardAvoidMode.OFF);
});
在另一个页面中,你可以设置为其他避让模式:
// 设置当前页面使用调整窗口大小的避让方式
win.setKeyboardAvoidMode(window.KeyboardAvoidMode.RESIZE);
注意事项:
- 此设置仅对当前窗口/页面生效,不会影响其他页面
- 需要在页面生命周期合适的时机调用(如
aboutToAppear) - 不同页面的设置是独立的,可以实现"有的页面避让,有的页面不避让"的需求
这样你就可以根据具体场景,为不同页面配置不同的键盘避让行为了。


