【HarmonyOS】键盘遮挡输入框UI布局处理

【HarmonyOS】键盘遮挡输入框UI布局处理

问题背景:

在开发输入框UI时,特别是登录页面的密码输入框靠下,或者是评论底部的pop弹框。

当我们输入框获得焦点后,键盘自下而上显示,一般情况下会遮挡住我们的UI布局。
导致用户输入时,键盘遮挡看不到自己输入的内容。

解决方案:

在鸿蒙应用开发中,我们针对键盘遮挡问题,通过窗口设置键盘遮挡模式来解决。目前键盘遮挡界面时,可以压缩窗口UI 或者 将窗口UI向上抬起两种方式:

dart 复制代码
import { KeyboardAvoidMode, UIContext } from '@kit.ArkUI';

aboutToAppear(): void {
  this.uiContext.setKeyboardAvoidMode(KeyboardAvoidMode.RESIZE);
}

// 需要注意的是,这里的上下文uiContext是窗口级别的上下文UIContext,并不是普通context。

 this.uiContext = this.getUIContext(); // √
  this.uiContext = getContext(); // x


// uiContext最方便的获取方式是,在当前界面中通过:
  this.getUIContext().setKeyboardAvoidMode(KeyboardAvoidMode.RESIZE);

// 当在逻辑类中想要拿到uiContext就只能通过单例或者AppStorage进行存储获取。例如:

import { KeyboardAvoidMode, UIContext } from '@kit.ArkUI';
import { hilog } from '@kit.PerformanceAnalysisKit';

onWindowStageCreate(windowStage: window.WindowStage) {
    windowStage.loadContent('pages/Index', (err, data) => {
    	globalThis.SysContext = windowStage.getMainWindowSync().getUIContext(); 
    	
		// 或者你的整个app都需要应用键盘遮挡模式,就可以直接在window创建的时候进行设置,没必要每个界面内调用设置。
      uiContext.setKeyboardAvoidMode(KeyboardAvoidMode.RESIZE);
      if (err.code) {
        return;
      }
    });
  }

1.界面UI压缩 KeyboardAvoidMode.RESIZE

2.界面UI抬起 KeyboardAvoidMode.OFFSET

当被抬起的界面中有不需要抬起的控件,如上图所示,其中的的标题栏控件就设置了 .expandSafeArea([SafeAreaType.KEYBOARD])}。

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a724bf42c1aa482cb79267f357125e6d.png

相关推荐
大雷神5 分钟前
HarmonyOS智慧农业管理应用开发教程--高高种地-- 第19篇:语音合成 - TTS语音播报
华为·语音识别·harmonyos
b2077215 分钟前
Flutter for OpenHarmony 身体健康状况记录App实战 - 提醒设置实现
python·flutter·macos·cocoa·harmonyos
xingfanjiuge1 小时前
Flutter框架跨平台鸿蒙开发——ListView.builder深度解析
flutter·华为·harmonyos
浩宇软件开发2 小时前
基于OpenHarmony鸿蒙开发,电影购票选座APP系统
华为·harmonyos
摘星编程3 小时前
React Native鸿蒙:useLayoutEffect同步布局计算
react native·react.js·harmonyos
ITUnicorn3 小时前
Flutter x HarmonyOS 6:依托小艺开放平台创建智能体并在应用中调用
flutter·harmonyos·鸿蒙·智能体·harmonyos6
小白郭莫搞科技3 小时前
鸿蒙跨端框架Flutter学习:CurvedAnimation曲线动画详解
学习·flutter·harmonyos
程序员清洒4 小时前
Flutter for OpenHarmony:ListView — 高效滚动列表
开发语言·flutter·华为·鸿蒙
翰德恩咨询4 小时前
华为企业市场营销MTL从市场到线索
华为·市场营销·mtl
Miguo94well4 小时前
Flutter框架跨平台鸿蒙开发——旅行攻略规划APP的开发流程
flutter·华为·harmonyos·鸿蒙