20

使用FT添加Fragment时,replace能实现布局的透明状态栏,而add则会直接顶掉状态栏

备注:我是在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()的方式实现透明状态栏,无效。

这是正确的实现:
图片说明
图片说明

以下是错误的实现:
图片说明
图片说明

查看全部
wjc295
一剑围城
2017/03/21 06:51
  • android
  • fitsystemswindow
  • coordinatorlayout
  • 点赞
  • 收藏
  • 回答
    私信

1个回复