windowTranslucentStatus设置为true的坑

原文地址:https://www.jianshu.com/p/f345f5715ecd

 

windowTranslucentStatus是Android4.4(API为19)开始提供的样式设置,如果要想在4.4手机上做沉浸式状态栏那么直能设置true。在Android5.0以后的版本可以不用设置windowTranslucentStatus=true来做沉浸式状态栏,可以直接设置状态栏颜色。但是如果想在Android5.0以后的版本想把状态栏的颜色设置成渐变或图片,那么直接设置状态栏颜色就达不到要求。只能设置windowTranslucentStatus=true,让页面的内容直接从状态栏颜开始。

windowTranslucentStatus=true会有那些问题:

如果键盘以adjustResize的形式弹出的话,输入框在屏幕下方的时候键盘会盖住输入框从而用户看不到自己输入的内容。(键盘以adjustResize的形式弹出的两种情况:1、在Activity的配置中设置windowSoftInputMode为adjustResize。2、没有设置windowSoftInputMode,但输入框在可滑动的控件内比如ScrowView、ListView、RecyclerView,系统会减小可以滚动的界面的大小,从而保证即使软键盘显示出来了,也能够看到所有的内容。这种情况键盘也是以adjustResize方式弹出。)

如何解决该问题:

1、最简单的办法就是设置windowSoftInputMode为adjustPan。缺点:体验不好,系统会通过布局的移动,来保证用户要进行输入的输入框肯定在用户的失业范围里面。

2、设置setFitsSystemWindows=true。缺点:setFitsSystemWindows要设置在布局的最顶层,这样保证的你的内容是从状态栏的下方开始的,这样键盘可以正常弹起。但沉浸式状态栏就不好做,Android4.4可以配合SystemBarTintManager一起使用,Android5.0可以单独设置状态栏颜色。但是复杂的状态栏样式还得用SystemBarTintManager。(有时候SystemBarTintManager也用了,如一个Activity里面有几个Fragment,每个Fragment要求的状态栏的样式都不同)

3、键盘弹起的时候动态改变ScrowView的大小。



 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值