/status-bar-compat

A compatible library for set status bar color.

Primary LanguageJavaApache License 2.0Apache-2.0

StatusBarCompat

Build Status Download ![Methods](https://img.shields.io/badge/Methods and size-84 | 12 KB-e91e63.svg)

简介

StatusBarCompat是一个用于设置系统状态栏颜色的兼容库,兼容Android 4.4.2(API 19)以上,使用简单,仅需要一行代码的调用。

效果展示

5.1.1运行效果 6.0深色状态栏白色文字 6.0浅色状态栏黑色文字

#使用方式

##声明仓库 确保在你的根项目的build.gradle中对jcenter的声明:

allprojects {
    repositories {
        jcenter()
    }
}

声明依赖

在你要使用的module的build.gradle文件中声明以下依赖:

    compile 'com.githang:status-bar-compat:0.5'

##代码调用 最后在你的Activity的onCreate代码中调用以下代码就可以了。

    StatusBarCompat.setStatusBarColor(this, color, lightStatusBar);

或者是

    StatusBarCompat.setStatusBarColor(this, color);

#适配支持情况

第三方ROM适配支持

ROM 适配说明
MIUI 调用小米的API适配
Flyme 调用魅族API适配,并且增加不主动设置可能不兼容的Flyme的状态栏的API
EMUI3.1 对于6.0以下5.0及其以上的EMUI,使用4.4.2的方式来处理(EMUI3.1无法使用5.0API设置)

##设置失败的机型

型号 系统版本 备注
高通 Andriod L Device1 4.4.4(SDK 19) 状态栏还是为黑色

已知的设置状态栏为白色后看不清时间的机型

把状态栏设置为白色或接近白色的颜色可能导致部分机型看不清状态栏的图标与文字,原因是这些机型把设置状态栏半透明改成了全透明,而Android 6.0以下没有官方的API可以把状态栏的图标及字体设置为深色,需要定制的ROM自己提供API支持。因此,不建议把状态栏设置为白色或接近白色的颜色。

目前已知的提供了支持的ROM有MIUI以及Flyme。以下是已知的不支持的机型列表:

型号 系统版本 备注
华硕 K010 4.4.2(SDK 19) 白色字体但有阴影
Lenovo TAB S8-50F 4.4.2(SDK 19) 完全看不到时间
联想 A936 4.4.4(SDK 19) 同上
联想 K80M 4.4.4(SDK 19) 同上

以上具体机型测试结果根据在Testin上随机兼容性测试所得,测试报告地址:http://realauto.testin.cn/s/1amaujufn

已知问题

  • 由于低于6.0以下的系统使用透明状态栏并设置fitsSystemWindows来实现设置状态栏颜色,在一些底部虚拟导航栏给隐藏的机型上,可能会出现界面无法显示在该区域中。如果遇到此问题,你需要把你的App theme指定为AppCompat里的一种。

参考资料: