105

是否可以更改操作欄中的溢出圖標?我有所有ActionBar項目的藍色圖標,我也想在出現時更改溢出圖標。更改操作欄中的溢出圖標

+0

@ShirishHerwade:那現在鏈接已經死了。 – 2017-03-30 21:25:53

回答

245

您可以使用樣式,但必須將其添加到主題主題聲明中。

<resources> 
    <!-- Base application theme. --> 
    <style name="Your.Theme" parent="@android:style/Theme.Holo"> 
     <!-- Pointer to Overflow style ***MUST*** go here or it will not work --> 
     <item name="android:actionOverflowButtonStyle">@style/OverFlow</item> 
    </style> 

    <!-- Styles --> 
    <style name="OverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow"> 
     <item name="android:src">@drawable/ic_action_overflow</item> 
    </style> 

</resources> 

您還可以動態地改變它,這是我細講這裏左右:

Changing the Android Overflow menu icon programmatically

+1

我已經發現這個解決方案正在尋找源代碼,但謝謝:)這是一個很好的答案。 – pjanecze 2012-03-16 07:42:09

+6

請注意,這適用於THEME,而不是STYLE。如果我堅持了一段時間,直到我意識到這一點。 Thx @aneal – 2012-11-19 08:21:10

+5

這會在運行Android 3.0(API 11)的平板電腦上崩潰,因爲它不喜歡定義風格「android:actionOverflowButtonStyle」(可能是平臺bug)的人。所以你必須在values-v11/styles.xml和values-v15/styles.xml中使用不同的樣式。 – 2012-12-31 07:24:12

1

@adneal's answer是正確的(所以這只是一個社區維基解釋擴大就可以了)。

其中一條評論意味着可能會誤解如何做到這一點,所以我的回答是關於如何覆蓋溢出圖標圖像的另一個例子。

以下代碼基於ADT示例New Android Project中的模板樣式。代碼來自res/values文件夾中的styles.xml文件。


<style name="AppBaseTheme" parent="android:Theme.Light"> 
    <!-- 
     Theme customizations available in newer API levels can go in 
     res/values-vXX/styles.xml, while customizations related to 
     backward-compatibility can go here. 

    --> 
</style> 

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 

    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
    <item name="android:actionOverflowButtonStyle">@style/OverflowMenuButton</item> 
</style> 

<style name="OverflowMenuButton" parent="@android:style/Widget.Holo.ActionButton.Overflow"> 
    <item name="android:src">@drawable/ic_menu_moreoverflow</item> 
</style> 

這是什麼上面的代碼所做的就是用您有任何可繪製的名爲ic_menu_moreoverflow默認溢出圖標。如果您想要快速測試它,請使用您的應用程序的啓動器圖標文件名,這將使它明白它的工作原理。

一個有用的資源,試圖瞭解ActionBar造型時使用,方法是:

在那裏,你可以定義特定的顏色使用您的溢出圖標,ZIP文件將包括正確的styles.xml文件爲你。

0

漫長的尋找什麼,我得到了指導後要遵循這樣的:

  1. 檢查在宣言文件的主題。
  2. 然後去res-> values->主題。
  3. 在此文件中查找主題名稱。
  4. 主題中添加該項目在theme.xml:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item> 
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 
    
  5. 在風格上添加圖標在同一個文件我的意思是theme.xml:

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow"> 
    <item name="android:src">@drawable/icon_menu</item> 
    </style> 
    
  6. 退房您要更改的自定義圖標

它對我有用

15

對於那些不能使用它的人來說,不要使用「android:」命名空間。

<item name="actionOverflowButtonStyle">@style/OverFlow</item> 
+0

感謝隊友,這真的幫助。任何人都得到了這個解釋? – DaMachk 2015-04-07 11:15:28

+4

@DaMachk如果你使用AppCompat,那麼不要包括「android:」命名空間。 – matiash 2015-05-26 16:23:37

4
  1. 更改styles.xml動作條的自定義菜單圖標。在AndroidManifest.xml

    <application 
        android:name="com.example.android.MainApp" 
        android:theme="@style/AppTheme"> 
    </application> 
    

的應用標籤

<resources> 
    <!-- Base application theme. --> 
    <style name=「MyTheme" parent="@android:style/Theme.Holo"> 
     <!-- Pointer to Overflow style DONT forget! --> 
     <item name="android:actionOverflowButtonStyle">@style/MyOverFlow</item> 
    </style> 

    <!-- Styles --> 
    <style name="MyOverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow"> 
     <item name="android:src">@drawable/ic_your_action_overflow</item> 
    </style> 
</resources> 
  • 認沽自定義主題 「的MyTheme」 玩得開心。@。@

  • 0

    不管我試圖styles.xml做,沒有任何解決方案爲我工作。最後,如果你有程序兼容性23+,你應該,這是實際工作的最簡單的方法:

    toolbar.setOverflowIcon(drawable);