risposta

245

È possibile con uno stile, ma è necessario aggiungerlo alla dichiarazione Tema principale.

<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> 

È inoltre possibile modificare in modo dinamico, che vado in dettaglio circa qui:

Changing the Android Overflow menu icon programmatically

+1

Ho già trovato questa soluzione cercando nel codice sorgente, ma grazie :) È una buona risposta. – pjanecze

+6

NOTA che questo è applicato al TEMA, e non allo STILE. Mi sono bloccato per un po 'fino a quando non me ne sono reso conto. Thx @aneal –

+5

Questo si bloccherà sui tablet con sistema operativo Android 3.0 (API 11), perché non gli piacciono le persone che definiscono lo stile "android: actionOverflowButtonStyle" (probabilmente bug della piattaforma). Quindi devi usare stili diversi in valori-v11/styles.xml e valori-v15/styles.xml. –

1

@adneal's answer è corretto (quindi questo è solo una spiegazione comunità wiki per espandere su di esso).

Uno dei commenti ha suggerito che potrebbe esserci un fraintendimento su come farlo, quindi la mia risposta è solo un altro esempio su come sovrascrivere l'immagine dell'icona Overflow.

Il codice di seguito è basato sugli stili di modello dell'esempio ADT Nuovo progetto Android. Il codice proviene dal file styles.xml nella cartella res/values.


<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> 

Che cosa questo codice di cui sopra non fa altro che sostituire l'icona predefinita di overflow con qualunque drawable avete denominato ic_menu_moreoverflow. Se vuoi un modo rapido per testarlo, usa il nome file dell'icona di avvio dell'app, che renderà evidente il suo funzionamento.

Una risorsa utile da utilizzare quando si cerca di capire ActionBar styling, è:

Non c'è possibile definire i colori specifici da utilizzare per l'icona Overflow, e il file ZIP includerà il file styles.xml corretto per te.

0

Dopo lunga ricerca che cosa ho ottenuto la guida da seguire come:

  1. Verificare il tema nel file manifesto.
  2. Quindi vai a res-> valori-> temi.
  3. Trova il nome del tema in questo file.
  4. Aggiungi l'articolo all'interno del tema nella theme.xml:

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item> 
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 
    
  5. aggiungere l'icona di stile nello stesso file intendo theme.xml:

    <style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow"> 
    <item name="android:src">@drawable/icon_menu</item> 
    </style> 
    
  6. Partenza l'icona personalizzata che si desidera modificare

Ha funzionato per me

15

Per coloro che non riescono a farlo funzionare provare questo SENZA lo spazio dei nomi "android:".

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

Grazie amico, questo mi ha davvero aiutato.Qualcuno ha una spiegazione per questo? – DaMachk

+4

@DaMachk Se stai usando AppCompat, quindi non includere il "android:" namespace. – matiash

4
  1. Cambia la tua icona di overflow personalizzato di ActionBar in styles.xml.

    <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> 
    
  2. Put tema personalizzato "MyTheme" nel tag applicazione di AndroidManifest.xml

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

divertirsi. @. @

0

Non importa quello che ho cercato di fare in styles.xml , nessuna delle soluzioni ha funzionato per me. Alla fine, se si dispone di AppCompat 23+, che si dovrebbe, questo è il modo più semplice che funziona davvero:

toolbar.setOverflowIcon(drawable);