yanzhenjie / Sofia

Android沉浸式效果的实现,状态栏和导航栏均支持设置颜色、渐变色、图片、透明度、内容入侵和状态栏深色字体;兼容竖屏、横屏,当屏幕旋转时会自动适配。
https://github.com/yanzhenjie/Sofia
Apache License 2.0
1.23k stars 162 forks source link

如何设置fragment状态栏为白色??? #40

Closed yangchong211 closed 6 years ago

yangchong211 commented 6 years ago

如何设置fragment状态栏为白色? 我跑了一下你的代码,如果设置fragment状态栏为白色,则无法看见状态栏中的时间,还有其它的状态。 如否实现fragment中的白色状态栏和状态栏深色字体activity效果?

yanzhenjie commented 6 years ago

可以,Demo没有问题,应该是理解和使用方法的问题。 如果是单Activity多Fragment,由Fragment控制状态栏颜色的应用,有两种方案:

  1. 由Activity控制状态栏背景颜色和字体颜色,提供方法供Fragment调用即可。
  2. 首先设置Activity侵入状态栏,并设置状态栏为透明色,相当于隐藏Activity的状态栏,然后在BaseFragment中封装状态栏(使用StatusView),由Fragment控制自己的颜色即可;但是状态栏字体颜色还是需要通过Activity控制。
yangchong211 commented 6 years ago

好的,非常感谢大神!!!

yangchong211 commented 6 years ago

这两种方法,我试过。场景:单个activity有多个Fragment 1.如果是设置fragment状态栏颜色【其中不包括透明色】,那么则可以正常切换状态栏的颜色 2.如果是在设置fragment中,有的是白色【或者其他色】,有的是透明色【就相当于隐藏了状态栏】,则还是会出现设置透明色无效

yanzhenjie commented 6 years ago

这其实更像是一个效果,而不是问题,透明色时应该显示了下面的Fragment的颜色,所以看起来无效。

实际上每一个Activity的Window都有背景色,如果你把Activity的Window设置为透明色,也会出现这个效果,所以你应该给Fragment的RootView设置一个背景色,才能更像一个Activity,再设置透明色就没有问题了。

yangchong211 commented 6 years ago

好的非常感谢大神……