博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 4.4及以后将内容布局延伸到状态栏
阅读量:5281 次
发布时间:2019-06-14

本文共 1051 字,大约阅读时间需要 3 分钟。

首先说明:该文章不是大家说的沉浸式状态栏,网上沉浸式状态栏的博客很多,搜索就有了!

该篇博客的主要目的就是为了将图片显示在状态栏上,让APP看起来更有型!如下图所示:

 

 
界面

这个界面的布局就是coordinatorLayout + CollapsingToolbarLayout实现的效果,将背景图片显示在状态栏上是不是显得更有逼格呢!至少博主看到还是觉得不错的,虽然第三方沉浸式状态栏的框架也能实现,但个人觉得还是有必要将这篇文章写下来(PS:博主用第三代的沉浸式框架实现好像主要用于修改状态栏的颜色,至于图片就没有做过了)。

其实,实现这种效果的原理还是透明状态栏,

 
透明状态栏

话不多说——show me the code。

一般情况下,需要创建vaules、values-v19以及values-v21三个文件夹,里面存放着三个版本下的styles文件,在19和21的主题文件下加上上面的item即可,同时切记Activity中的布局中不需要 添加android:fitsSystemWindows="true",不然不能实现效果。

最后21文件下需要添加statusBarColor为透明颜色的item,

 
v21文件

设置好以上步骤之后你可以直接运行项目,会发现以下的情况:

 

 
布局上移

哈哈,哈哈。。。。      这是为什么呢?就是前面说的android:fitsSystemWindows="true"的问题,没在根局部加就会出现这样的问题,BUT,加上又不能实现效果,这该如何是好呢?

其实,加上android:fitsSystemWindows="true"这句话之后布局文件就会自动在状态栏下开始布局,而不加这句并且在4.4以后加上透明状态栏之后你的activity的布局就会从整个手机屏幕顶端开始布局,而不是从状态栏之后。所以,加上透明状态栏之后说明你的布局被上移了,然后就需要手动来测量状态栏的高度,并且给toolBar(我这里的布局,你的布局不确定哦)设置margin了。

 
设置margin

      同时,需要知道透明状态栏是4.4之后才能设置的,小于4.4的手机是不识别的,顾它还是直接从状态栏以后开始布局的,所以必须判断手机的版本,不然的话小于4.4的手机会出现对顶部有一个margin,这是我们不愿意看到的。

最后就实现了这种效果了—— 将布局中的图片延伸到状态栏,实现高逼格应用!

转载于:https://www.cnblogs.com/zhujiabin/p/9112008.html

你可能感兴趣的文章
opencv实现人脸识别(一)opencv的相关知识了解
查看>>
JS 方法中 对HTML的 拼接
查看>>
LR学习笔记2-Recording Options之Recording选项卡HTML-based script
查看>>
微软职位内部推荐-Software Engineer II
查看>>
c++ goto的使用
查看>>
六、Docker+Gitlab
查看>>
WPF下制作的简单瀑布流效果
查看>>
ASP.NET微信公众号用于给指定OpenId用户发送红包
查看>>
RabbitMQ学习总结
查看>>
.NET Core开发日志——Startup
查看>>
Docker---(7)Docker安装启动RabbitMQ
查看>>
潜移默化学会WPF--绘图 学习(一) - AYUI框架 - 博客园
查看>>
Android项目实战(八):列表右侧边栏拼音展示效果
查看>>
备份链中断导致差异备份报错案例
查看>>
解决iconv函数无法转换某些中文的问题
查看>>
WCF技术剖析之十二:数据契约(Data Contract)和数据契约序列化器(DataContractSerializer)...
查看>>
WPF在XAML中Binding使用StringFormat属性
查看>>
MVC5 + EF6 + Bootstrap3 (14) 分部视图PartialView
查看>>
看看这个超级实用的一种类型——匿名类型
查看>>
网页JS获取当前地理位置(省市区)
查看>>