在学习HarmonyOS的开发中,遇到TextField输入框被软键盘遮住的问题网上查找了一些解决方案,虽然效果也能达到,但是解决思路不正确,简单问题复杂化了,这里记录一下我发现的解决方法。
先看效果:
解决思路
理论上软键盘与输入框应该是常用功能,不应该让用户自己去计算组件高度,监控软键盘是否弹出,所以按照Android的思路也应该有全局设置方法。
Android 解决方法
// 1:xml 配置
android:windowSoftInputMode="adjustPan"
// 2:java 配置
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
跟着这个思路去查询鸿蒙开发文档,找到了两个类似的属性和方法:
WindowManager.LayoutConfig里面的INPUT_ADJUST_RESIZE
和Window里面的setInputPanelDisplayType()
经过多次尝试,终于找到设置软键盘自适应的正确方法,在onStart()函数中设置:
this.getWindow().setInputPanelDisplayType(WindowManager.LayoutConfig.INPUT_ADJUST_PAN);
解决问题的思路和方向一定要正确