博客
关于我
关于如何彻底搞定Android Kitkat+沉浸式状态栏效果
阅读量:679 次
发布时间:2019-03-16

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

所谓“沉浸式”状态栏

这里所说的沉浸式状态栏,就是指上面的效果,状态栏和Toolbar的颜色保持一致,融为一体的效果。

版本差异及解决方法

本文所用的示例使用的style风格是NoActionBar的,标题栏使用的是Toolbar控件,请知悉。

Android4.4

Android4.4以前的版本,状态栏的颜色都是黑色的,而且无法修改;但一般APPToolbar都不会设置为黑色,于是,两者有十分明显的颜色区分,各自占有不同的区域,填充不同的颜色。

简单的说,Android4.4以前的版本是无法做到沉浸式的效果的(做系统开发的除外),所以如果想要统一风格的话,可以设置APP最小支持的版本为4.4,如果不行,就没办法了,只能4.4以前一个样式,4.4及以后一个样式。
Android4.4开始,新增了设置状态栏背景色透明的属性,新增的属性是这两个:

WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUSWindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION

这两个属性分别设置状态栏和导航栏背景色为全透明。(这里只讨论状态栏,只设置上面一个属性就行,导航栏的类似)

实现方法很简单,在Activity初始化时,调用以下代码:

由于是代码设置,所以无法通过xml预览到想要的结果,一定要在4.4真机上运行才能看到效果。到这里可能存在两个问题:

1.Toolbar把状态栏的空间占用了,挤到一起。
2.状态栏和Toolbar并没有完全融为一体,而是从上到下,由黑色渐变到Toolbar的颜色。

第一个现象是必现的,解决方法是在Toolbar的布局文件里加上一个属性:

android:fitsSystemWindows="true"

这个属性必须加在Toolbar或者Toolbar的父控件上,也就是,如果Toolbar直接写在Activity的布局文件里,则在Toolbar上加这个属性,如果Toolbar是include到Activity的布局文件里,则可以加到Toolbar的父控件里;

由于文章篇幅影响需要后续资料的可以点击下方链接

最后分享一份进阶学习资料、有需要的可以

转载地址:http://iexqz.baihongyu.com/

你可能感兴趣的文章
Vue基本使用---vue工作笔记0002
查看>>
Netty工作笔记0068---Protobuf机制简述
查看>>
Netty工作笔记0069---Protobuf使用案例
查看>>
Netty工作笔记0070---Protobuf使用案例Codec使用
查看>>
Netty工作笔记0071---Protobuf传输多种类型
查看>>
Netty工作笔记0072---Protobuf内容小结
查看>>
Netty工作笔记0073---Neety的出站和入站机制
查看>>
Netty工作笔记0074---handler链调用机制实例1
查看>>
Netty工作笔记0075---handler链调用机制实例1
查看>>
Netty工作笔记0076---handler链调用机制实例3
查看>>
Netty工作笔记0077---handler链调用机制实例4
查看>>
Netty工作笔记0078---Netty其他常用编解码器
查看>>
Netty工作笔记0079---Log4j整合到Netty
查看>>
Netty工作笔记0080---编解码器和处理器链梳理
查看>>
Netty工作笔记0081---编解码器和处理器链梳理
查看>>
Netty工作笔记0082---TCP粘包拆包实例演示
查看>>
Netty工作笔记0083---通过自定义协议解决粘包拆包问题1
查看>>
Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
查看>>
Netty工作笔记0085---TCP粘包拆包内容梳理
查看>>
Netty常用组件一
查看>>