美文网首页
状态栏透明设置

状态栏透明设置

作者: 真胖大海 | 来源:发表于2017-07-06 16:25 被阅读91次

参考文档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);
}
  • 主题属性设置
<item name="android:windowTranslucentStatus">true</item>

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

解决方法

  • 方法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));
  • 属性设置
<style name="AppTheme" parent="BaseTheme">
        <item name="android:colorPrimary">@color/colorPrimary</item>
        <item name="android:colorPrimaryDark">@color/colorPrimary</item>
        <item name="android:colorAccent">@color/colorAccent</item>
        <item name="android:statusBarColor">@color/white</item>
</style>
    ```
如果设置了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; //状态栏不为高亮
+ 主题属性设置  
  <item name="android:windowLightStatusBar">true</item>
  设置为true,表示状态栏为高亮的颜色,则状态栏图标文字为黑色
  设置为false,表示状态栏为不为高亮的颜色,则状态栏图标文字为白色

相关文章

  • 沉浸式、MVP、MVVM

    1.沉浸式状态栏 获取状态栏的高度,然后把toolbar的高度加上状态栏的高度,再设置状态栏透明设置状态栏透明: ...

  • 沉浸式状态栏(/虚拟导航栏)

    通过设置Theme主题设置状态栏透明 保证内容不扩充到状态栏

  • 沉浸式页面效果

    设置状态栏背景透明 设置状态栏字体颜色 设置DecorView全屏 针对Toolbar(系统或者自定义),留出顶部...

  • Android沉浸状态栏(StatusBar)兼容方案

    所谓"沉浸状态栏"的实现需要两点: 设置状态栏为透明或者半透明状态; 整体布局可以置于状态栏下方. 1. 状态栏的...

  • 2018-11-20透明式状态栏

    通过设置 Theme 主题设置状态栏透明 因为 API21 之后(也就是 android 5.0 之后)的状态栏,...

  • StatusBar背景色和字体颜色设置

    设置状态栏背景色 支持5.0以上,4.4只支持设置是否半透明 设置状态栏字体颜色 支持6.0以上 - 只能设置白色...

  • 关于沉浸式状态栏的理解

    一. 沉浸式状态栏无非就两种 第一种:设置状态栏透明,布局会往上撑状态栏全透明或半透明,然后activity布局会...

  • android案例---透明状态栏

    想要实现的效果: 设置透明状态栏 设置之后虽然状态栏隐藏了,但是状态栏的高度被填充了(少了状态栏的高度),如下: ...

  • Android 之低版本高版本实现沉浸式状态栏

    沉浸式状态栏确切的说应该叫做透明状态栏。一般情况下,状态栏的底色都为黑色,而沉浸式状态栏则是把状态栏设置为透明或者...

  • 沉浸式效果

    Android 5.0 设置状态栏全透明,将布局顶到status bar上 StatusBarUtil 状态栏工具...

网友评论

      本文标题:状态栏透明设置

      本文链接:https://www.haomeiwen.com/subject/snnhhxtx.html