1
回答
使用FT添加Fragment时,replace能实现布局的透明状态栏,而add则会直接向上偏移顶掉状态栏
【寻找人气王】邀新用户免费体验华为云服务,百元话费等你拿!   

使用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()的方式实现透明状态栏,无效。

这是正确(replace)的实现:



以下是错误(add)的实现:

<无标签>
举报
一剑围城
发帖于1年前 1回/225阅
顶部