Hey,很久不見。今天遇到一個問題,想要把Status Bar 和 Tool Bar的顏色弄成同樣的,或者是相似的,例如Material Design:android
圖中Status Bar顏色比Tool Bar稍微深了一些,也頗有層次。app
在Android Studio1.4提供的模板的styles.xml裏面,其實已經實現了這樣的方法:spa
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
這裏的colorPrimary對應Tool Bar的顏色,colorPrimayDark對應Status Bar的顏色。這兩種顏色能夠在Values-colors.xml中自定義。.net
也就是說,只要修改這兩個顏色,就能輕鬆實現上圖的MD效果。code
我設置的minSdk level是15(4.0),這樣定義沒有提示不兼容,可是不知道在5.0如下機器上可否出效果。可是,若是採用下面兩個特性(結尾的連接裏的),就會明確要求minSdk 19。xml
<!-- 設置導航欄和狀態欄成半透明的 --> <item name="android:windowTranslucentNavigation">true</item> <item name="android:windowTranslucentStatus">true</item>
比較奇怪的是,雖然咱們能夠在app_bar_main.xml中看到背景顏色被設成了colorPrimay,blog
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" />
但我全局搜索了一下,並無發現哪裏有調用colorPrimaryDark。這也很好理解,畢竟沒有一個組件是Status Bar能夠供你調用。我猜測這是一個特殊的關鍵字,意即colorPrimaryDark是一個約定的詞,在特定版本會被Status Bar自動地使用。get
不少其餘的應用,好比知乎,他的Status Bar其實跟Tool Bar是同樣的顏色,它採起的是Translucent Bar透明狀態欄的策略。注意,國外說的沉浸(Immersive)跟這個有區別。it
其餘可能幫到你的資料:io
安卓4.4以上修改狀態欄顏色:http://blog.csdn.net/koche/article/details/46766963
知乎:http://www.zhihu.com/question/27177235
Material調色盤:http://www.materialpalette.com/red/pink