2015-05-27 49 views
3

我知道有可能取代圖標通過設置一個自定義actionOverflowButtonStylehere描述。但是,該樣式只允許設置不同的可繪製和/或背景。如何着色AppCompat r22.1操作欄溢出圖標?

相反,我想用由程序兼容性提供的標準圖標,只是着色它與特定的顏色,正如抽屜圖標/後退按鈕可以經由color屬性在drawerArrowStyle被着色。

我都試過這些方法,據說曾經工作:

但據我可以看到他們沒有使用最新的程序兼容性工作 - 溢出圖標保持其原來的顏色(而其他部件,如TextViews或菜單項的文本變化)。

現在應該這樣做嗎?我沒有使用自定義的Toolbar視圖,只是默認的AppCompat提供的,類似於ActionBar的視圖。


如何重現:

  1. 創建一個默認的Android Studio項目,以最小的SDK版本= 9
  2. 這自動包括一個空白的活動和菜單資源與單個菜單項, 「設置」,其中app:showAsAction="never"表示它將顯示在溢出菜單中。
  3. 最後,自定義styles.xml文件。例如:

    <resources> 
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
         <item name="colorPrimary">#008888</item> 
         <item name="colorControlNormal">#ff0000</item> 
         <item name="android:textColorPrimary">#ff0000</item> 
        </style> 
    </resources> 
    

你會發現,無論是屬性會影響溢出菜單圖標的顏色。使用Android 5.1.1測試Nexus 5。

+0

[mcve](http://stackoverflow.com/help/mcve)請 – tachyonflux

+0

@karaokyo完成,雖然它非常容易重現 - 默認的新Android Studio項目已經足夠。 – matiash

+0

哦,好吧,這是'DarkActionBar'強制白色覆蓋。不要使用'DarkActionBar'? – tachyonflux

回答

2

如果您跟蹤Theme.AppCompat.Light.DarkActionBar主題,你看,它集:

<item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item> 

這反過來又來自Base.ThemeOverlay.AppCompat.Dark繼承,其中規定:

<item name="android:textColorPrimary">@color/abc_primary_text_material_dark</item> 

基本上等於白:

<color name="primary_text_default_material_dark">#ffffffff</color> 

如果您只是從Base.Theme.AppCompat.Light繼承,則不會遇到此問題,因爲它不會設置actionBarTheme。無論如何,您都可以使用材質屬性輕鬆定製操作欄。

+0

謝謝,我會研究這一點 - 我曾嘗試suppling'actionBarStyle',但不是'actionBarTheme'。 – matiash

相關問題