简单的监听软键盘缩放的一种方式(不锁定 windowSoftInputMode==adjustPan 才可用)

要达到效果:当软键盘收起,隐藏EditTex控件。

要求页面不能锁定软键盘适配模式为 adjustPan,否则此方案无效

步骤:

1、给外层ViewGoup添加 OnLayoutChangeListener 监听,这个监听会在软键盘展开/收起时触发。

但仅仅这一步并不够,会发现触发总是又一次调用延迟

2、给Activity设置 android:windowSoftInputMode="adjustResize"

这一步使页面在软键盘弹出时缩小高度,而不是默认的被顶上去。当这一行写上时,就可以在 OnLayoutChangeListener 中根据 oldBottom 与 bottom 进行伸缩判断了

我的代码(Kotlin):

rootView.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom ->
    if (oldBottom == 0 || bottom == 0) return@addOnLayoutChangeListener
    if (oldBottom - bottom > 300) {
        //开了软键盘

    } else if (bottom - oldBottom > 300) {
        //关了软键盘

    }
}

猜你喜欢

转载自blog.csdn.net/qq_34224268/article/details/82141973