Risposte:
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
parent="Widget.Sherlock.ActionButton.Overflow"
parent="@style/Widget.AppCompat.ActionButton.Overflow"
sembra funzionare per me.
Per coloro che non riescono a farlo funzionare, provare questo SENZA lo spazio dei nomi "android:".
<item name="actionOverflowButtonStyle">@style/OverFlow</item>
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>
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.@.@
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);
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.xml
file nella res/values
cartella.
<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 ActionBar
stile è:
Qui puoi definire colori specifici da utilizzare per la tua icona Overflow e il file ZIP includerà il styles.xml
file corretto per te.
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.
Dopo una lunga ricerca, ho ricevuto la guida da seguire:
Aggiungi l'elemento all'interno del tema nel theme.xml:
<item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
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>
Controlla l'icona personalizzata che desideri modificare
Ha funzionato per me