一、发现问题
项目中适配了Android最新的MaterialDesign,其中最主要修改的一个就是将actionbar 替换成了toolbar,如果对toolbar没有了解的话可以参考
这篇文章
由于我们要用toolbar替代actionbar,所以我们首先要做的就是隐藏actionbar,我们在theme中声明
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
....
适配完toolbar后,我们有一个界面是这样的
也就是说底部有一个菜单栏,键盘弹出的时候会把这个菜单栏顶上来,正常来说,我们只需要在 AndroidManifest相应的Activity下面声明:
android:windowSoftInputMode="adjustResize"
就可以搞定。
但是,适配toolbar后,尼玛竟然不生效了。。。
二、解决问题
google了下,简单的解决办法说是这样的,加一个属性
android:fitsSystemWindows="true"
虽然可以生效,但是。。toolbar向下平移了statusbar的高度,也就是说statusbar是全白的。。
看来这个不行了,继续google。。
找到了这个
分数最高的那个解决方案
在三星上可以完美解决,但是在5.0系统和魅族手机上 底部菜单栏和键盘有大约50px的高度,不能完美适配。。。尼玛
继续google
自定义了一个layout继承你的根layout。
重写fitSystemWindows方法,并且在根layout中声明 fitSystemWindows="true"
虽然麻烦点,但是在三星和魅族以及nexus 5的 4.3-5.0系统都可以完美适配。