备注:我是在Fragment的布局中实现透明状态栏和Toolbar
实现透明状态栏(沉浸式?)的方案:
Fragment的布局采用如下结构:
Coordinatorlayout 使用fitSystemsWindows
AppbarLayout 使用fitSystemsWindows
CollapsingToobarlayout 使用fitSystemsWindows
ImageView 使用fitSystemsWindows
Toolbar
将statusbar颜色设置为transparent
@android:color/transparent
MainActivity中使用如下结构
LinearLayout
FrameLayout container装载Fragment
...
问题如下:
现在使用replace替换Fragment,则每个fragment都能实现透明状态栏,但是每次都会重新加载布局。
于是我采用add的方式,每次切换都能够保留fragment的状态
可是,问题在这里:使用add添加的fragment会直接顶掉状态栏。
我尝试了:
1、在Activity中的LinearLayout或Framelayout添加fitsystemwindow属性,状态栏会变成一条白色的边。
2、将Activity中的FrameLayout替换成CoordinatorLayout,无效。
3、在代码中getwindow().setFlag()的方式实现透明状态栏,无效。
这是正确的实现:
以下是错误的实现: