因为是主界面包含2个fragment,而这两个fragment的头部颜色又不一样。(我手机是6.0的系统)所以第一个 colorAccent切换到第二个red的fragment的时候默认的状态栏依旧为colorAccent,看起来太别扭了。
当然似乎实现方法有多种。就记录一下我采取的方案吧。其实这也是我看到一位简书上面的作者的文章做的。可惜今天找不到那个文章地址了。怕以后在遇到自己记录一下顺便加深印象、
首先在activity处理
恩if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上
View decorView = getWindow().getDecorView();
int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
decorView.setSystemUiVisibility(option); getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccent));
}
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
}
然后在创建value-19和value-21创建所用的主题style和value中名字一样
自带的主题
Paste_Image.png
19下面的主题
Paste_Image.png21下面的主题
Paste_Image.png然后是在需要的fragment的布局文件中给跟布局设置背景色(如果背景色影响到内部内容,建议在外边套一层RelativeLatout之类的。)
Paste_Image.png这个paddingtop是跟版本有关的。19以下为25,之后为0,所以需要在value-19和value下分别创建dimens文件处理。
网友评论