miui android 去除 导航栏 代码,GitHub - hao123456/status-bar-compat: 一行代码调用,布局零入侵。去除阴影 <item name="android:...

StatusBarCompat

68747470733a2f2f7472617669732d63692e6f72672f6d7364782f7374617475732d6261722d636f6d7061742e7376673f6272616e63683d6d6173746572

68747470733a2f2f6170692e62696e747261792e636f6d2f7061636b616765732f6d7364782f6d6176656e2f537461747573426172436f6d7061742f696d616765732f646f776e6c6f61642e737667

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6574686f647320616e642073697a652d313037207c203135204b422d6539316536332e737667

简介

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

效果展示

a445759c22892e200df894966dd1db79.png

7ccb3e22eb969c0a6d0e9fe67c7b9bbc.png

22583102747899280e86cb6c4f334b9b.png

使用方式

声明仓库

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

allprojects {

repositories {

jcenter()

}

}

声明依赖

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

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

代码调用

最后在你的Activity的setContentView()方法调用之后,调用以下方法即可。

StatusBarCompat.setStatusBarColor(this, color, lightStatusBar);

或者是

StatusBarCompat.setStatusBarColor(this, color);

API文档

适配支持情况

第三方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及以上

Flyme

MIUI

6.0以下的其他机型因未提供相关API可以把状态栏图标设置为黑色,所以无法支持。请不要再提不在上述范围的手机无法设置深色图标的issue了。

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

把状态栏设置为白色或接近白色的颜色可能导致部分机型看不清状态栏的图标与文字,原因是这些机型把设置状态栏半透明改成了全透明,而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里的一种。

可能会出现状态栏与标题栏之间有一个与状态栏同样大小的间距,如果出现请调用以下代码:

StatusBarCompat.resetActionBarContainerTopMargin(getWindow(), android.support.v7.appcompat.R.id.action_bar_container);

参考资料:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值