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

今天想试试沉浸栏的使用,但是按照网上相应的方法设置完成后,没有达到想要的结果。使用情况是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中,设置对应的状态。

[java]

  1. @Override  
  2.     public void onHiddenChanged(boolean hidden) {  
  3.         if (view != null) {  
  4.             if (hidden) {  
  5.                 view.setFitsSystemWindows(false);  
  6.             } else {  
  7.                 view.setFitsSystemWindows(true);  
  8.             }  
  9.             view.requestApplyInsets();  
  10.         }  
  11.         super.onHiddenChanged(hidden);  
  12.     }  

不知道为啥,只能控制设置显示的fragment对应的 [java]

  1. view.setFitsSystemWindows(true);而其他的fragment为false。使用replace的方式可能不用关心这个问题。具体的我没尝试。尝试的兄弟可以告诉我下 
    原文作者:道路修建问题
    原文地址: https://blog.csdn.net/u013334392/article/details/54616837
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞