2015-10-29 325 views
27

Android Studio中新的默認抽屜式導航活動模板改變顏色

enter image description here

定義其標題和圖標菜單中的文件activity_main_drawer這樣的:

<group android:checkableBehavior="single"> 
    <item 
     android:id="@+id/nav_camara" 
     android:icon="@drawable/ic_action_emo_cool" 
     android:title="Import" /> 
    <item 
     android:id="@+id/nav_gallery" 
     android:icon="@android:drawable/ic_menu_gallery" 
     android:title="Gallery" /> 
    <item 
     android:id="@+id/nav_slideshow" 
     android:icon="@android:drawable/ic_menu_slideshow" 
     android:title="Slideshow" /> 
     ... 

我的示例中的第一項使用紅色圖標:

enter image description here

但是當我運行應用程序時,圖標的顏色仍然是黑色。我已經測試了藍色,綠色,黃色和紫色圖標,但結果是相同的。

enter image description here

我讀的地方,工具欄應該使用ThemeOverlay.AppCompat.Dark.ActionBar和我的應用程序已經使用這個在styles.xml文件:

<resources> 

<!-- 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> 
<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> 
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> 

起初,我認爲這有一些東西需要與Android Studio的緩存功能讓我無效緩存並重新啓動Android Studio而沒有運氣。

+5

嘗試'app:itemIconTint =「@ android:color/blue」'到您的'導航視圖'# –

+0

[http://stackoverflow.com/questions/30967851/change-navigation-view-item-color-dynamicly -android](http://stackoverflow.com/questions/30967851/change-navigation-view-item-color-dynamicly-android) –

+0

謝謝@MD。這就是我需要添加 –

回答

65

基於@ MD的評論,所有我需要做的是補充:

app:itemIconTint="@color/my_desired_colour" 

NavigationView(它位於activity_main.xml佈局文件)默認色調是黑色的,但你可以使用一個更暗的陰影黑色採用#000000

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header_main" 
    app:itemIconTint="#000000" 
    app:menu="@menu/activity_main_drawer" /> 
+0

謝謝:)我將如何去爲所有的圖標設置一個色調,而不是一個。對於一個特定的圖標,我希望色彩設置爲空(即)一個特定的菜單項圖標以其全色顯示在所有狀態中 – Rohan

+0

歡迎您......但我不知道如何實現這一點。好的 –

+0

它適用於我。 –

0

必須更改colorAccent在顏色的目的文件曾經顏色,你想:

<color name="colorAccent">whichever color required</color> 

該解決方案爲我

15

創建一個新的風格:

<style name="DrawerIconStyle" parent="Widget.AppCompat.DrawerArrowToggle"> 
    <item name="color">@android:color/red</item> 
</style> 

和n你的主題:

<item name="drawerArrowStyle">@style/DrawerIconStyle</item> 
+1

這對我來說,任何其他解決方案 – yashpandey

0

基於@ojonugwa ochalifu和@ MD的評論,

你可以通過編寫app:itemIconTint來實現,但如果你寫這個,導航抽屜我配色也會改變。簡易的解決方案,我很多[R & d後發現是,你必須使用你在ToolbarAppBarLayout主題,或者如果定義<item name="colorControlNormal">#FFE730</item>只是沒AppBarLayout,你也可以在你的XML編寫主題<item name="colorControlNormal">#FFE730</item>popupThemeToolbar

這也會改變活動後退箭頭的顏色。

希望這可以幫助你面對這類問題的所有人。