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修改狀態列顏色.有點麻煩.
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援指令碼之家。