在activity中使用多个fragment时设置第一个fragment的沉浸栏有效,其他无效解决办法

来源:互联网 发布:sql注入站点 编辑:程序博客网 时间:2024/05/01 17:23

今天想试试沉浸栏的使用,但是按照网上相应的方法设置完成后,没有达到想要的结果。使用情况是activity配合groupradio实现fragment切换,每个fragment的状态栏需要显示不同的颜色。通过hide和show的方式控制显示当前fragment。在对应的xml中设置android:fitsSystemWindows="true",以达到改变状态栏颜色的问题(具体如何配置请查阅其他文档)。

但是这样做第一个fragment达到了想要的效果,其他三个状态栏的颜色正确,但是padding没有设置成功。标题栏占用状态栏的位置。

解决方法:

将xml中的android:fitsSystemWindows="true"去掉,通过代码的方式来控制。在默认第一个fragment的onCreateView中设置view.setFitsSystemWindows(true);该view为该fragment对应的view。在onHiddenChanged中,设置对应的状态。

@Overridepublic void onHiddenChanged(boolean hidden) {if (view != null) {if (hidden) {view.setFitsSystemWindows(false);} else {view.setFitsSystemWindows(true);}view.requestApplyInsets();}super.onHiddenChanged(hidden);}
不知道为啥,只能控制设置显示的fragment对应的
view.setFitsSystemWindows(true);而其他的fragment为false。使用replace的方式可能不用关心这个问题。具体的我没尝试。尝试的兄弟可以告诉我下

0 0
原创粉丝点击