今天想试试沉浸栏的使用,但是按照网上相应的方法设置完成后,没有达到想要的结果。使用情况是activity配合groupradio实现fragment切换,每个fragment的状态栏需要显示不同的颜色。通过hide和show的方式控制显示当前fragment。在对应的xml中设置
Android:fitsSystemWindows="true",以达到改变状态栏颜色的问题(具体如何配置请查阅其他文档)。
不知道为啥,只能控制设置显示的fragment对应的
但是这样做第一个fragment达到了想要的效果,其他三个状态栏的颜色正确,但是padding没有设置成功。标题栏占用状态栏的位置。
解决方法:
将xml中的android:fitsSystemWindows="true"去掉,通过代码的方式来控制。在默认第一个fragment的onCreateView中设置view.setFitsSystemWindows(true);该view为该fragment对应的view。在onHiddenChanged中,设置对应的状态。
- @Override
- public void onHiddenChanged(boolean hidden) {
- if (view != null) {
- if (hidden) {
- view.setFitsSystemWindows(false);
- } else {
- view.setFitsSystemWindows(true);
- }
- view.requestApplyInsets();
- }
- super.onHiddenChanged(hidden);
- }
- view.setFitsSystemWindows(true);而其他的fragment为false。使用replace的方式可能不用关心这个问题。具体的我没尝试。尝试的兄弟可以告诉我下