鸿蒙输入框被软键盘遮挡的解决办法

网友投稿 1258 2023-04-08

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

鸿蒙输入框被软键盘遮挡的解决办法

想了解更多内容,请访问:

和华为官方合作共建的鸿蒙技术社区

问题现状

安卓上面,输入框被软键盘遮挡,很简单

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,还有别的解决办法吗?

抽取出工具类或工具方法,代码复用。

想了解更多内容,请访问:

和华为官方合作共建的鸿蒙技术社区

上一篇:如何让SQL中的COUNT(*)飞起来
下一篇:像查询数据库一样查询你的 Linux 操作系统信息
相关文章

 发表评论

暂时没有评论,来抢沙发吧~