Android 4.4及以后将内容布局延伸到状态栏
首先说明:该文章不是大家说的沉浸式状态栏,网上沉浸式状态栏的博客很多,搜索就有了!
该篇博客的主要目的就是为了将图片显示在状态栏上,让APP看起来更有型!如下图所示:
这个界面的布局就是coordinatorLayout + CollapsingToolbarLayout实现的效果,将背景图片显示在状态栏上是不是显得更有逼格呢!至少博主看到还是觉得不错的,虽然第三方沉浸式状态栏的框架也能实现,但个人觉得还是有必要将这篇文章写下来(PS:博主用第三代的沉浸式框架实现好像主要用于修改状态栏的颜色,至于图片就没有做过了)。
其实,实现这种效果的原理还是透明状态栏,
话不多说——show me the code。
一般情况下,需要创建vaules、values-v19以及values-v21三个文件夹,里面存放着三个版本下的styles文件,在19和21的主题文件下加上上面的item即可,同时切记Activity中的布局中不需要 添加android:fitsSystemWindows="true",不然不能实现效果。
最后21文件下需要添加statusBarColor为透明颜色的item,
设置好以上步骤之后你可以直接运行项目,会发现以下的情况:
哈哈,哈哈。。。。 这是为什么呢?就是前面说的android:fitsSystemWindows="true"的问题,没在根局部加就会出现这样的问题,BUT,加上又不能实现效果,这该如何是好呢?
其实,加上android:fitsSystemWindows="true"这句话之后布局文件就会自动在状态栏下开始布局,而不加这句并且在4.4以后加上透明状态栏之后你的activity的布局就会从整个手机屏幕顶端开始布局,而不是从状态栏之后。所以,加上透明状态栏之后说明你的布局被上移了,然后就需要手动来测量状态栏的高度,并且给toolBar(我这里的布局,你的布局不确定哦)设置margin了。
同时,需要知道透明状态栏是4.4之后才能设置的,小于4.4的手机是不识别的,顾它还是直接从状态栏以后开始布局的,所以必须判断手机的版本,不然的话小于4.4的手机会出现对顶部有一个margin,这是我们不愿意看到的。
最后就实现了这种效果了—— 将布局中的图片延伸到状态栏,实现高逼格应用!