news 2026/4/15 3:59:17

【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/4/6 12:37:01

‌量子AI黑市调查:1分钟破解比特币钱包的暗网服务‌

量子AI黑市攻击技术全景图 (基于暗网服务"Q-Breaker v3.2"逆向分析) 一、攻击技术栈分层拆解 graph LR A[量子暴力破解层] --> B[AI动态优化层] B --> C[区块链节点欺骗层] C --> D[钱包协议漏洞层] 量子计算加速核心 采用混合量子…

作者头像 李华
网站建设 2026/4/2 7:58:55

自动操作浏览器,又一款 Chrome 神器,开源了!

大家最近在折腾 AI Agent 时,有没有遇到过这种尴尬的情况:让 AI 去某个网站查资料、抓数据,它在后台吭哧吭哧跑了半天,最后告诉你:“对不起,报错了”。大多时候,你会发现这些问题,主…

作者头像 李华
网站建设 2026/4/9 9:52:27

域控十年演进

下面这份内容,不是 ECU 合并史,也不是“几域几控”的产品路线图,而是站在**“域控作为智能汽车/机器人系统中枢”的高度,对未来十年的一次结构性演进判断**。🧠🚗 域控十年演进(2025–2035&…

作者头像 李华
网站建设 2026/4/8 22:10:43

导师推荐8个AI论文工具,继续教育学生轻松搞定论文写作!

导师推荐8个AI论文工具,继续教育学生轻松搞定论文写作! AI 工具如何助力论文写作,让学术之路更轻松 在当今快速发展的学术环境中,继续教育学生面临着越来越多的挑战,尤其是在论文写作方面。传统的写作方式不仅耗时耗力…

作者头像 李华
网站建设 2026/4/4 5:38:17

vue3怎么实现网页端的文件夹上传?

武汉码农の大文件上传奇遇记:在长江边写信创代码 各位好,我是小王,武汉光谷某软件公司"防脱发小组"组长。最近接了个政府项目,要求在信创环境下上传4G文件,还必须开源可审查——这就像让我用热干面调料写火…

作者头像 李华
网站建设 2026/4/4 11:59:35

基于BS架构的高校超市自助售卖系统的设计与实现

摘 要 随着医药行业快速发展与居民健康意识提升,传统超市销售模式效率低、管理滞后等问题凸显。同时,政策对商品流通监管趋严,对信息化管理提出更高要求。消费者购买商品习惯逐渐向便捷化、个性化转变,急需借助数字化技术优化购买…

作者头像 李华