Material Design 之 定義狀態欄(Status Bar)的顏色

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

相關文章
相關標籤/搜索