使用PopupWindow辅助监听来将主视图设为adjustNothing,确实是个好方法。
onGlobalLayout 的判断经过我使用多种真机测试,发现需要做很多无效性判定。不然很容易产生误判。
1.横屏模式在切入后台,再切回前台,部分手机会产生视图旋转。触发布局调整。
2.底部导航栏状态变更会触发布局调整。
3.有些时候我们并不会把app设置为全屏,计算键盘高度并不总等于物理高减可视底。
4.有些机型点开软键盘后会频繁触发onGlobalLayout。
这个是我自己使用的一个,可以参考一下。
https://bitbucket.org/mm_longcheng/mm-core/src/dev/nwsi/proj/android/src/org/mm/nwsi/mmUIViewLayoutListener.java