安卓实现微信、QQ输入框自适应软键盘高度

前言

安卓环境,输入法的软键盘弹出时默认会改变window大小,但是可以肯定,微信和QQ都不是采用这种策略,一个检测方法:点击微信输入框,然后点击+号按钮弹出抽屉菜单并隐藏软键盘,可以发现这个过程很流畅,就仿佛抽屉原本就在软键盘下方藏着一样,而此过程如果采用adjustResize策略会导致window大小变大,然后抽屉需要scroll出来,会出现一个闪烁。于是可以断定,我们的思路是采用adjustNothing策略——软键盘不改变window大小。

问题

我们需要保证输入框的底边刚好在软键盘上方,于是我们需要想办法获取软键盘实时高度,获得这个高度之后,我们就可以通过scroll父容器或者直接设置输入框的y坐标即可。

思路

软键盘高度没有直接监听办法,我们可以新建一个透明PopupWindow,PopupWindow的软键盘策略采用adjustResize,我们只需监听这个window的高度变化即可。

监听window的高度变化可以通过PopupWindow的contentView.viewTreeObserver.addOnGlobalLayoutListener实现

Kotlin代码:

class SoftKeyboardHeightDetector(private val activity: Activity, callback: (height: Int) -> Unit<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值