您的位置:首页 > 移动开发 > Android开发

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

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

@Override
public 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的方式可能不用关心这个问题。具体的我没尝试。尝试的兄弟可以告诉我下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息