状态栏透明设置

参考文档1
参考文档2
参考文档3

状态栏透明设置

一.android4.4(19) 及其以上

  • 代码设置
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
    localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
}
  • 主题属性设置
true

如上设置状态会被设置成透明的,但是页面内容会扩展到状态栏

解决方法

  • 方法1 在toolBar设置 android:fitsSystemWindows=”true”

  • 方法2 根布局增加一个控件其高度为状态栏的高度

二.android5.0(21) 及其以上

  • 代码设置
Window window = getWindow();
//取消设置透明状态栏,使 ContentView 内容不再覆盖状态栏
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//需要设置这个 flag 才能调用 setStatusBarColor 来设置状态栏颜色
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//设置状态栏颜色
window.setStatusBarColor(getResources().getColor(R.color.header_bg));
  • 属性设置

    ```
如果设置了statusBarColor 状态栏颜色为其设置的值  
如果没有设置statusBarColor 状态栏颜色为colorPrimaryDark设置的值


# 状态栏图标文字颜色设置
## android 6.0(23)及其以上
+ 代码设置

Window window = getWindow();
View decor = window.getDecorView();
int ui = decor.getSystemUiVisibility();
ui |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
// ui &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
decor.setSystemUiVisibility(ui);

ui |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;  //状态栏为高亮 
ui &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; //状态栏不为高亮
+ 主题属性设置  
  true
  设置为true,表示状态栏为高亮的颜色,则状态栏图标文字为黑色
  设置为false,表示状态栏为不为高亮的颜色,则状态栏图标文字为白色

你可能感兴趣的:(状态栏透明设置)