关于透明状态栏的使用以及与软键盘冲突的解决办法

关于透明状态栏的使用以及与软键盘冲突的解决办法
     注:在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中 。并且,在弹出软键盘时,  重新设置容器高度,新的高度是之前高度与键盘高度的和。这样,即使键盘遮挡住了界面,界面还可以上下滑动不被遮挡。
代码如下

效果如图:


抛砖引玉。不足的地方请大家指点一二。有其他的解决办法,请大家说出来  一起交流谈论

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值