È possibile modificare l'icona di overflow nella barra delle azioni? Ho icone blu per tutti gli oggetti ActionBar e voglio anche cambiare l'icona di overflow quando appare.Modifica dell'icona di overflow nella barra delle azioni
risposta
È 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:
Ho già trovato questa soluzione cercando nel codice sorgente, ma grazie :) È una buona risposta. – pjanecze
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 –
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. –
@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.
Dopo lunga ricerca che cosa ho ottenuto la guida da seguire come:
- Verificare il tema nel file manifesto.
- Quindi vai a res-> valori-> temi.
- Trova il nome del tema in questo file.
Aggiungi l'articolo all'interno del tema nella theme.xml:
<item name="android:actionBarWidgetTheme">@style/widgetStyle</item> <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
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>
Partenza l'icona personalizzata che si desidera modificare
Ha funzionato 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 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>
Put tema personalizzato "MyTheme" nel tag applicazione di AndroidManifest.xml
<application android:name="com.example.android.MainApp" android:theme="@style/AppTheme"> </application>
divertirsi. @. @
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);
@ShirishHerwade: Questo collegamento è morto. –