Android 4.4 以及 5.0以上 透明状态栏

透明状态栏 网上都叫沉浸式状态栏,说到底就是为了应用主题统一,美观。

Android4.4和5.0以上实现有些区别,4.4以下不支持

4.4有两种实现方式

1. 状态栏透明 且覆盖根布局 效果如下

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //透明状态栏
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

        }
}

默认情况是这样的

这里写图片描述

可以看到整个布局穿过了状态栏,显然这不是我们想要的样子,解决这个问题也不难 设置一个paddingTop ,大小和状态栏一样高就可以了

效果如下
这里写图片描述

2. 状态栏透明 且不覆盖根布局 效果如下

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //透明状态栏
            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

        }
}       

然后在根布局里添加

android:fitsSystemWindows="true"

如果根布局没有设置背景颜色就会变成这样子

这里写图片描述

设置了背景颜色后就跟背景颜色一样了

这里写图片描述

这是我目前所知道的关于4.4设置状态栏透明的和为状态着色的方法

5.0以上 当然5.0以上也能有4.4的方法实现

但是效果有点差别 不是全透明的

这里写图片描述

可以用另一种方式实现全透明

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();           window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            window.setStatusBarColor(Color.TRANSPARENT);
        }
}       

这里写图片描述

5.0以上可以设置状态栏颜色 而不用跟着根布局背景色

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();           window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            window.setStatusBarColor(Color.YELLOW);
        }
}        

这里写图片描述

以上就是我所知道关于设置状态栏主题的方法,有什么不对的欢迎指出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值