AIOps 平台的误解,挑战及建议(中),AIOps常见的误解
1258
2023-04-08
鸿蒙输入框被软键盘遮挡的解决办法
想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
问题现状
安卓上面,输入框被软键盘遮挡,很简单
xml 配置 android:windowSoftInputMode="adjustPan" 或者,java 配置 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
这样,软键盘弹出后,输入框就会自动上移。
鸿蒙上也有类似的设置,但是貌似没效果:
getWindow().setInputPanelDisplayType(WindowManager.LayoutConfig.INPUT_ADJUST_PAN);
解决过程
原理:
布局文件用ScrollView包起来
监听根布局大小变化,变小了,证明输入法弹出了。
滚动ScrollView,使当前焦点控件显示在软键盘上方。
核心代码:
完整代码见文末
计算滚动距离
其中上面的大红框是decorRect(即当前Ability可视区域),下面的大黑框是输入法显示区域。其中,软键盘弹出后,输入框被软键盘挡住,图中的小红框。
所以,要滚动的距离就是图中的C=A-B。
可以优化的点:
如果是Dialog中的输入框,当前的计算方法是否正确?
如果不用ScrollView,还有别的解决办法吗?
抽取出工具类或工具方法,代码复用。
想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
发表评论
暂时没有评论,来抢沙发吧~