news 2026/6/15 14:47:15

【HarmonyOS NEXT】解决:软键盘弹起导致页面整体上移、标题栏丢失的问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【HarmonyOS NEXT】解决:软键盘弹起导致页面整体上移、标题栏丢失的问题

一、背景

在开发鸿蒙 APP 登录页时,会遇到这样的体验问题,当用户点击输入框弹出软键盘时,整个页面会被默认的上推模式带起,导致顶部的标题栏被推出可视区域,严重影响用户体验。

备注:以下解决方法为(API 11+),低版本不适配哦!

二、具体问题

页面分为三个部分,顶部固定标题,中间是logo图标,底部是输入框。用户点击底部输入框时,页面弹出软键盘,顶部固定标题没有固定住,整体往上移动。

问题效果预览:图1是没弹出软键盘的场景,图2是弹出软键盘的场景。

问题代码示例如下:

@Extend(TextInput) function commonInputStyle(maxLength: number) { .placeholderColor('#999999') .borderRadius(8) .contentType(ContentType.PHONE_NUMBER) .caretStyle({ color: '#b35336', width: 2 }) .height(48) .maxLength(maxLength) .maxLines(1) .type(InputType.Number) .fontColor('#333333') .width("100%") .backgroundColor(Color.White) .padding({ left: 16, right: 16 }) .shadow({ radius: 4, color: '#00000008', offsetY: 2 }) } @Entry @Component export struct Index { @State phoneNumber: string = "" @State codeNumber: string = "" build() { Column() { Stack({ alignContent: Alignment.Top }) { Column() .width('100%') .height('100%') .backgroundColor('#F8F9FA') // 标题栏 Column() { Text('密码登录') .fontColor('#333333') .fontSize(20) .fontWeight(500) .margin({ top: 10 }) // logo模块 Image($r("app.media.startIcon")) .width(120) .objectFit(ImageFit.Contain) .margin({ top: 110, bottom: 60 }) .borderRadius(16) .shadow({ radius: 8, color: '#00000010', offsetY: 4 }) // 输入模块 Column() { TextInput({ text: this.phoneNumber, placeholder: "请输入手机号" }) .commonInputStyle(11) .onChange((value: string) => { this.phoneNumber = value }) TextInput({ text: this.codeNumber, placeholder: "请输入短信验证码" }) .commonInputStyle(6) .margin({ top: 20 }) .onChange((value: string) => { this.codeNumber = value }) } .width('100%') .padding({ top: 200, left: 32, right: 32 }) } .width('100%') .height('100%') .justifyContent(FlexAlign.Start) } } .width('100%') .height('100%') } }

三、问题定位

3.1、确定问题

标题栏无固定布局,依赖页面整体排版,键盘弹起时随页面上移丢失

首先默认场景下UI是没有啥问题的,主要是在键盘弹起后UI整体上移了,那问题就出现键盘弹起的过程上,是没有正确配置键盘避让模式

3.2、键盘背景知识:

官网文档指引👉:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-uicontext-e#keyboardavoidmode11

KeyboardAvoidMode配置键盘避让页面的避让模式,其中KeyboardAvoidMode.RESIZE表示压缩模式

四、解决问题

核心方案:配置setKeyboardAvoidMode(KeyboardAvoidMode.RESIZE)(API 11+)

解决软键盘弹出后顶部控件无法固定的问题,可以通过setKeyboardAvoidMode来配置虚拟键盘弹出时,页面的避让模式为压缩模式。

在aboutToAppear生命周期里面配置键盘避让模式为压缩模式👇

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 11:43:13

基于8086的步进电机系统数码管显示转速数值含报告(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

基于8086的步进电机系统数码管显示转速数值含报告(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 proteus仿真汇编源码基于8086步进电机,8086电机系统转数档位数值正转前面显示0,反转显示-,…

作者头像 李华
网站建设 2026/5/30 18:26:36

裁员这事儿,还真没完了。。

2026年的大环境并不乐观,身边不少朋友失业,收入都在下滑。不少读者问我如何应对,思来想去还是要做增量,守是守不住的。不管是打工还是自己做事情,一定要做增量。比如搞副业、开辟新业务等等。另外就是,不要…

作者头像 李华
网站建设 2026/6/14 5:44:17

面试官:什么是 Redis 的数据分片?

在线 Java 面试刷题(持续更新):https://www.quanxiaoha.com/java-interview 面试考察点 面试官提出这个问题,通常不仅仅是想知道一个简单的定义。其核心考察点在于: 对分布式系统核心思想的理解:考察你是否…

作者头像 李华
网站建设 2026/6/15 13:25:56

COSCon‘25 第十届中国开源年会登上中国日报,并获评思否「最受开发者欢迎的技术活动」

由开源社主办的 COSCon25 第十届中国开源年会于 2025 年 12 月在北京圆满落幕。开源驱动的下一代 AI 技术与生态、AI 时代的数据挑战、开源芯片的生态发展与未来趋势、新时代下的全球协作、被 AI 颠覆的 Coding、极速狂飙的具身智能开源浪潮…… 这些在开年 DeepSeek 时刻之后&…

作者头像 李华
网站建设 2026/6/15 13:38:44

接受程度的七个层次及应对之道

接受程度的七个层次及应对之道一、七个接受层次1. 欣赏:由衷认同并喜爱,带有正面期待。这是接受的最高层次,伴随着主动支持和推广的意愿。2. 接纳:虽不热衷但乐意包容,视为合理存在。此时保持着开放心态,愿…

作者头像 李华
网站建设 2026/6/15 13:39:06

炒的这么火,到底什么是具身智能?来吧,听我扯扯淡。

00什么是具身智能?别把它和“机械臂”混为一谈很多人会问:“工厂里的机械臂早就有了,波士顿动力的狗也跳了好几年舞了,这算什么新概念?”这里有一个巨大的误区。传统的机器人,是“自动化”,不是…

作者头像 李华