关于透明状态栏的使用以及与软键盘冲突的解决办法
注:在Android 4.4 以上版本才有这个功能
1、什么是透明状态栏?
我是这样理解的,在手机屏幕最顶部显示信号电量等信息的地方就是状态栏,设置透明状态栏,就是给状态栏设置背景色。
比如:QQ使用的透明状态栏 ,如图。状态栏的背景是蓝色。
2、怎样使用透明状态栏?
这个并不复杂。
在Activity中设置,在setContentView()后加一代码:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
布局文件中给状态栏添加背景 如图
运行效果:
具体高度和颜色根据自己的需求调整。
3、使用透明状态栏会遇到问题
当界面的底部有 EditText 时 ,问题就冒出来了。
如图:
编辑其他EdiText时,什么都没有发生。当编辑界面底部的EditText时。诡异的事情发生了。
要么 软件盘直接遮挡住了EditText 如图:
要么 软键盘把状态栏的背景挤出了屏幕,并且其他控件 占据了状态栏的位置。
在一般情况下可以在Manifest中通过设置windowSoftInputMode属性轻松解决。但是这里使用了透明状态栏就失效了。
4、解决办法
我是这样解决的。既然弹出屏幕会把view整体上移,那就把控件都写在ScrollView中 。并且,在弹出软键盘时,
重新设置容器高度,新的高度是之前高度与键盘高度的和。这样,即使键盘遮挡住了界面,界面还可以上下滑动不被遮挡。
代码如下
效果如图:
抛砖引玉。不足的地方请大家指点一二。有其他的解决办法,请大家说出来 一起交流谈论