设置App标题栏与系统状态栏同色

首先上两张图对比看一下效果:
设置App标题栏与系统状态栏同色_第1张图片设置App标题栏与系统状态栏同色_第2张图片
系统默认一般都是非沉浸式状态栏如酷狗音乐这张图,而我们今天所要实现的就是第二张这种沉浸式状态栏

前提

 建立的安卓工程必须是API 19以上的才行,也就是Android4.4版本以上。

实现步骤

1.在布局文件的最外层Layout上加上两个属性

android:clipToPadding="true"
android:fitsSystemWindows="true"

如图所示:设置App标题栏与系统状态栏同色_第3张图片

2.在Activity的onCreate()方法中加入两行代码:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); //透明导航栏

3.在Activity的onCreate()方法中加入一行代码:

requestWindowFeature(Window.FEATURE_NO_TITLE); //设置无标题栏
注意:此句代码一定要加在setContentView(R.layout.activity_main);之前。

如图所示:这里写图片描述
通过以上三步简单的操作,这样就可以实现状态栏变色啦!

深入分析:

1、其实,只需要加入
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); //透明导航栏
这两行代码就能改变状态栏颜色。但是,会出现状况。
设置App标题栏与系统状态栏同色_第4张图片
我们看到标题栏会整体往上移动,占据状态栏的空间。也就是将状态栏当成了APP标题栏的一部分。
2.如果onCreate()方法中不加 requestWindowFeature(Window.FEATURE_NO_TITLE); 这句代码可以看到,布局多了系统自带的title栏,一般情况下这是不需要的
3.状态栏的颜色,就是布局文件中最外层的布局的背景颜色。但是,如果最外层的Layout设置宽高都是 match_parent,而其子布局未设置任何背景颜色,这样的话,就会使整块屏幕(包括状态栏)都是一个颜色

你可能感兴趣的:(标题栏,app)