Android实现修改状态栏背景字体和图标颜色的方法
Posted Red风信子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android实现修改状态栏背景字体和图标颜色的方法相关的知识,希望对你有一定的参考价值。
前言:
android开发,对于状态栏的修改,实在是不友好,没什么api可以用,不像ios那么方便.但是ui又喜欢只搞ios一套.没办法.各种翻源码,写反射.真的蛋疼.
需求场景:
当toolbar及状态栏需要为白色或浅色时(如简书),状态栏由于用的Light风格Theme,字体,图标也都是白色,会看不清.如果改变成黑色就很和谐了.
一.修改状态栏颜色:
改变状态栏颜色,可以看看这篇文章.传送门:实现状态栏(statusbar)渐变效果其实很简单
传送门实现的效果:
这种方法实现的状态栏变色,没有黑色背景.
使用全屏模式实现的效果如下(QQ的效果):
很明显的黑色背景.
我用的手机是华为,系统7.0
二.修改状态栏字体:
通用工具类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
|
activity中使用:
1 |
|
效果:
出现的问题:
1.statusbar背景色变成了colorPrimaryDark默认颜色,但是我的配置是白色背景(具体配置代码见最后).
分析原因:
setSystemUiVisibility()会刷新view的属性配置.由于statusbar默认使用colorPrimaryDark属性.所以颜色会变回默认颜色
此时步骤一设置背景的方法就会失效.
1 2 3 4 5 6 7 8 9 |
|
原因:当传入的resid相同时,就不会再次去设置背景色.
解决办法:
1 2 3 4 5 6 7 8 9 10 |
|
修改后的效果:
三.完整代码:
1.MvpConfig
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
2.Application中
1 2 3 4 5 6 7 8 |
|
3.BaseActivity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
四.补充:
6.0以下,5.0原生系统无法修改字体颜色,用了个比较取巧的办法,设置成半透明灰色.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
由于是直接修改window中的statusbarview的背景,而frgament依赖于activity,所以在activity与fragment直接跳转时,状态栏不是很适用.比如:activity是蓝色,fragment需要是白色,fragment需要通过window修改状态栏颜色.有点麻烦.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
以上是关于Android实现修改状态栏背景字体和图标颜色的方法的主要内容,如果未能解决你的问题,请参考以下文章
Uniapp 动态修改状态栏导航栏背景色字体颜色插件 Ba-AppBar