Modifica dell'icona di overflow nella barra delle azioni


Risposte:


255

Puoi farlo con uno stile, ma devi aggiungerlo alla dichiarazione del 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>

Puoi anche cambiarlo dinamicamente, cosa di cui vado nei dettagli qui:

Modifica dell'icona del menu Android Overflow a livello di programmazione


1
Ho già trovato questa soluzione esaminando il codice sorgente, ma grazie :) È una buona risposta.
pjanecze

6
NOTA che questo viene applicato al TEMA e non allo STILE. Sono rimasto bloccato per un po 'finché non me ne sono reso conto. Thx @aneal
Richard Le Mesurier

5
Questo andrà in crash su tablet che eseguono Android 3.0 (API 11), perché non gli piace che le persone definiscano lo stile "android: actionOverflowButtonStyle" (probabilmente bug della piattaforma). Quindi devi usare stili diversi in values-v11 / styles.xml e values-v15 / styles.xml.
Mr-IDE

10
E per gli utenti di ActionBarSherlock, lo stile principale è: parent="Widget.Sherlock.ActionButton.Overflow"
Nick White

7
Per appcompat (v21 lollipop comunque), parent="@style/Widget.AppCompat.ActionButton.Overflow"sembra funzionare per me.
fattire

16

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

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

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

4
@DaMachk Se stai usando AppCompat, non includere lo spazio dei nomi "android:".
matiash

4
  1. Cambia la tua icona di overflow personalizzata 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. Inserisci il tema personalizzato "MyTheme" nel tag dell'applicazione di AndroidManifest.xml

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

Divertiti.@.@


4

Non importa cosa ho provato a fare styles.xml, nessuna delle soluzioni ha funzionato per me. Alla fine, se hai AppCompat 23+, cosa che dovresti fare, questo è il modo più semplice che funziona effettivamente:

toolbar.setOverflowIcon(drawable);

Il modo più accurato che ho trovato!
Shubhamhackz

1

La risposta di @ adneal è corretta (quindi questa è solo una spiegazione del wiki della comunità per espanderla).

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

Il codice riportato di seguito è basato sugli stili del modello dell'esempio di ADT Nuovo progetto Android. Il codice proviene dal styles.xmlfile nella res/valuescartella.


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

Quello che fa questo codice sopra è sostituire l'icona di overflow predefinita con qualsiasi oggetto disegnabile che hai chiamato ic_menu_moreoverflow. Se vuoi un modo rapido per provarlo, usa il nome del file dell'icona di avvio della tua app, che renderà ovvio come funziona.

Una risorsa utile da utilizzare quando si cerca di capire lo ActionBarstile è:

Qui puoi definire colori specifici da utilizzare per la tua icona Overflow e il file ZIP includerà il styles.xmlfile corretto per te.


1

Per cambiare il colore dell'icona di Overflow, puoi semplicemente aggiungere

toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));

o

toolbar.setOverflowicon(getDrawable(R.id.redIcon));

Cambierà l'icona, scegli il colore che desideri e imposta come icona Overflow.


0

Dopo una lunga ricerca, ho ricevuto la guida da seguire:

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

    <item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
  5. Aggiungi l'icona nello stile nello stesso file, voglio dire theme.xml:

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

Ha funzionato per me

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.