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

来源:互联网 发布:域名已经预定 编辑:程序博客网 时间:2024/05/19 14:01

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

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);        }}        

这里写图片描述

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

阅读全文
0 0
原创粉丝点击