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的大小。
网友评论