【HarmonyOS】键盘遮挡输入框时,实现输入框显示在键盘上方

news2025/1/11 5:56:39

【关键字】

harmonyOS、键盘遮挡input,键盘高度监听

【写在前面】

在使用API6、API7开发HarmonyOS应用时,常出现页面中需要输入input,但是若input位置在页面下方,在input获取焦点的时候,会出现软键盘挡住input情况,对于这个问题,这里介绍如何在input获取焦点时,将input显示在键盘上方功能,键盘收起时,将input回归到原位,即如下效果:

cke_515.pngcke_781.png

【页面布局】

首先我们编写一个简单的页面,这里直接将页面input设置在页面底部,代码如下:

// index.html
<div class="container">
    <input onfocus="foucs" value="{{inputVal}}" placeholder="请输入内容"
           style="position: absolute;bottom: {{keyboardHeight}}px;"></input>
</div>

【页面样式】

简单给input设置宽高,代码如下:

.container {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    left: 0px;
    top: 0px;
    width: 100%;
    height: 100%;
}

input {
    width: 100%;
    height: 40px;
    border-radius: 10px;
}

【页面逻辑】        

当input获取焦点时,通过 @ohos.window 相关接口监听键盘高度变化,从而改变input位置,代码如下:

import window from '@ohos.window'

export default {
    data: {
        keyboardHeight: 0,
    },
    onInit() {

    },
    foucs() {
        console.info("foucs");
        let windowClass = null;
        window.getTopWindow((err, data) => {
            if (err) {
                console.error('Failed to obtain the top window. Cause: ' + JSON.stringify(err));
                return;
            }
            windowClass = data;
            console.info('Succeeded in obtaining the top window. Data: ' + JSON.stringify(data));
            try {
                // 开启键盘高度变化的监听
                windowClass.on("keyboardHeightChange", (data) => {
                    console.info('Succeeded in enabling the listener for keyboard height changes. Data: ' + JSON.stringify(data));
                    let height = data.height;

                    // 键盘弹起时设置input高度
                    if (this.keyboardHeight != height) {
                        this.keyboardHeight = height % 3.8;
                        console.info("keyboardHeightChange keyboardHeight:" + this.keyboardHeight)
                    }
                })
            } catch (exception) {
                console.error('Failed to enable the listener for keyboard height changes. Cause: ' + JSON.stringify(exception));
            }
        })
    },
}

这样就实现输入框显示在键盘上方效果了

【参考文档】

https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-window-0000001477981397-V3#ZH-CN_TOPIC_0000001573929313__%E5%AF%BC%E5%85%A5%E6%A8%A1%E5%9D%97

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/819639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【备战csp-j】 csp常考题型详解(2)

二.计算机网络。 1. TCP/IP 协议共有( )层协议 。 A.3 B.4 C.5 D.6 答案&#xff1a;B 解析&#xff1a; 2.Ipv4 地址是由( ) 位二进制数码表示的。 A.16 B.32 C.24 D.8 答案&#xff1a;B 解析&#xff1a;IP地址是IP协议提供的一种统一的地址格式。在目前使用的IPv…

使用Python创建快速创建剪映草稿轨道,自动生成视频

使用Python创建快速创建剪映草稿轨道&#xff0c;自动生成视频 一、实现原理 实现原理 : JianYingPro 项目文件是 json 的形式存储的&#xff0c;只需要创建draft_content.json,draft_mate_info.json 打开软件后会自动补全。 作用&#xff1a;快速生成草稿&#xff0c;可以完…

jenkins通过sshPut传输文件的时候,报错Permission denied的SftpException

一、背景 使用jenkins的ssh插件传输文件至远程机器的指定目录&#xff0c;php程序打包后&#xff0c;经过zip压缩为oms.zip zip -rq oms.zip ./ -x .git/* -x .env然后我们求md5值 md5sum oms.zip最后执行传输。 09:03:02 Executing command on ssh[116.61.10.149]: mkdir…

深度技术解析:验证码短信API的实现原理与优化策略

引言 验证码短信在现代应用中扮演着至关重要的角色&#xff0c;它是一种简单而高效的安全验证方式&#xff0c;被广泛用于各类应用和场景。验证码短信在现代应用中的起着账号安全保障、交易与支付安全保障等重要作用。 在本文中&#xff0c;本文将围绕验证码短信 API 的基本原…

消息队列中间件 MetaQ/RocketMQ

简介—— 消息队列中间件 MetaQ/RocketMQ 中间件 MetaQ 是一种基于队列模型的消息中间件&#xff0c;MetaQ 据说最早是受 Kafka 的影响开发的&#xff0c;第一版的名字 "metamorphosis"&#xff0c;是奥地利作家卡夫卡的名作——《变形记》。RocketMQ 是 MetaQ 的开…

【零基础??天速成 Java】Day1 - 初识 java

目录 前言 1. 第一个 java 程序 2. java 开发的注意事项 3. java 的注释 4. javadoc 标签 5. java 的变量 6. java 的 String 和 基本类型转换 7. java 的输入 8. java 的数组 9. java 的方法 10. java 方法的传参 写在最后&#xff1a; 前言 我的 java 基础学习…

工业机器人:现代制造业的革命力量

随着科技的迅猛发展&#xff0c;工业机器人已经成为现代制造业中不可或缺的一环。工业机器人的发展历经几十年的演进&#xff0c;从最早只能完成重复性、单一性的任务&#xff0c;到如今可以完成复杂多变的工序。工业机器人的应用领域也不断扩大&#xff0c;如汽车制造、电子制…

《零基础入门学习Python》第074讲:GUI的终极选择:Tkinter11

今天我们来讲讲 事件绑定。正如我们此前所提到的&#xff0c;一个 tkinter 的应用程序大部分时间是花费在事件循环中的&#xff0c;也就是通过 mainloop() 方法进入时间循环了&#xff0c;事件可以有各种各样的来源&#xff0c;比如说 用户移动、点击一下鼠标&#xff0c;会产生…

git常用命令速查表

1.git add -u [<路径>]: 把<路径>中所有跟踪&#xff08;tracked&#xff09;文件中被修改过或已删除文件的信息添加到索引库。它不会处理未跟踪&#xff08;untracked&#xff09;的文件。省略<路径>表示&#xff1a;即当前目录。 2.git add -a [<路径&…

BGP属性+选路规则

目录 一&#xff0c;BGP的属性—基础属性 1.PrefVal 2.LocPrf 3、优先本地下一跳 &#xff08;NextHop&#xff09; 4、AS-PATH 5、起源属性 6、MED -多出口鉴别属性 二&#xff0c;BGP选路规则 三&#xff0c;BGP的社团属性 一&#xff0c;BGP的属性—基础…

埃隆马斯克五步工作法丨IDCF

作者&#xff1a;徐磊 文章首发地址&#xff1a;https://smartide.cn/zh/blog/2022-0707-elonmusk-5steps/ 埃隆马斯克在2021年被福布斯杂志评选为世界首富&#xff0c;截至2022年7月他的个人财富为2214亿美金&#xff0c;他同时也是多家公司的CEO&#xff0c;包括&#xff1a…

便利生活,探索上门家政小程序的必备功能与用户体验

上门家政小程序是一种方便用户在线预约家政服务的应用程序。下面将介绍一下开发上门家政小程序时的必备功能&#xff0c;以及这些功能如何提供便利和增加用户体验。   在线预约功能&#xff1a;上门家政小程序提供了在线预约平台&#xff0c;用户可以通过手机随时随地选择需要…

Linux命令(56)之ifconfig

Linux命令之ifconfig 1.ifconfig介绍 linux命令ifconfig可以用来查看网卡信息&#xff0c;启停网卡&#xff0c;设置网络IP等&#xff0c;基于实际运维场景&#xff0c;我们就来说说ifconfig普遍的常规用法 2.ifconfig用法 ifconfig [网络设备名称] [参数] ifconfig参数 参…

try catch 应该在for循环里面还是外面

使用场景 为什么要把 使用场景 摆在第一个 &#xff1f; 因为本身try catch 放在 for循环外面和里面&#xff0c;如果出现异常&#xff0c;产生的效果是不一样的。 怎么用&#xff0c;就需要看好业务场景&#xff0c;去使用了。 ① try catch在for循环外面 代码示例 &…

免费Scrum工具,Scrum敏捷研发管理流程

Leangoo领歌它覆盖了敏捷项目研发全流程&#xff0c;包括小型团队Scrum敏捷开发&#xff0c;规模化敏捷SAFe&#xff0c;Scrum of Scrums大规模敏捷。它提供了灵活的敏捷模板和极致的协作体验&#xff0c;可以让团队快速上手&#xff0c;快速落地Scrum敏捷开发管理。 首先建立产…

Arcgis 分区统计majority参数统计问题

利用Arcgis 进行分区统计时&#xff0c;需要统计不同矢量区域中栅格数据的众数&#xff08;majority&#xff09;&#xff0c;出现无法统计majority参数问题解决 解决&#xff1a;利用copy raster工具&#xff0c;将原始栅格数据 64bit转为16bit

Blazor第三方组件库推荐:BootstrapBlazor UI

文章目录 前言资源适合人群如何开始环境配置开始新项目Server和Wasm的区别.NET CORE 不支持 7.0运行结果 使用组件发布项目配置到IIS里面 前言 Blazor是C#全栈追求极致开发速度的一个前后端不分离的框架&#xff0c;上限是在Winform,WPF,MAUI等宿主环境上面运行的全平台引用。…

给你一把钥匙,教你如何实时翻译网课语音

嘿&#xff01;你是否曾经遇到过参加过一节精彩的录播课程&#xff0c;但因为语言不通而错失了许多重要内容的情况&#xff1f;或许你也曾因无法即时和老师互动而感到遗憾。别担心&#xff01;我将带你探索一个令人兴奋的解决方案——语音翻译&#xff01;这项神奇的技术能够让…

时间复杂度为O(n2)的三种简单排序算法

1.冒泡排序 冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较&#xff0c;看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少少一个元素移动到它应该在的位置&#xff0c;重复n次&#xff0c;就完成了n个数据的排序工作。 /*** …

通用商城项目(中)

金山编译器出问题了。下面段落标号全出问题了&#xff0c;排版也出问题了。懒得改了。 使用对象存储OSS&#xff0c;保存品牌logo 新建Module&#xff0c;提供上传、显示服务 有些不明所以的&#xff0c;按照steinliving-commodity配置了一通pom.xml 新建application.yml&…