Antworten:
Sie können mit einem Stil, aber Sie müssen ihn der Hauptthema-Deklaration hinzufügen.
<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>
Sie können es auch dynamisch ändern, worauf ich hier näher eingehen möchte:
parent="Widget.Sherlock.ActionButton.Overflow"
parent="@style/Widget.AppCompat.ActionButton.Overflow"
scheint das bei mir zu funktionieren.
Für diejenigen, die es nicht zum Laufen bringen können, versuchen Sie dies OHNE den Namespace "android:".
<item name="actionOverflowButtonStyle">@style/OverFlow</item>
Ändern Sie Ihr benutzerdefiniertes Überlaufsymbol der Aktionsleiste 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>
Fügen Sie das benutzerdefinierte Thema "MyTheme" in das Anwendungstag von AndroidManifest.xml ein
<application
android:name="com.example.android.MainApp"
android:theme="@style/AppTheme">
</application>
Habe Spaß.@.@
Egal, was ich versuchte styles.xml
, keine der Lösungen funktionierte für mich. Wenn Sie AppCompat 23+ haben, was Sie sollten, ist dies der einfachste Weg, der tatsächlich funktioniert:
toolbar.setOverflowIcon(drawable);
Die Antwort von @ adneal ist korrekt (dies ist also nur eine Erklärung des Community-Wikis, um sie zu erweitern).
Einer der Kommentare deutete darauf hin, dass es möglicherweise zu Missverständnissen kommt, daher ist meine Antwort nur ein weiteres Beispiel für das Überschreiben des Überlaufsymbolbilds.
Der folgende Code basiert auf den Vorlagenstilen aus dem ADT-Beispiel für ein neues Android-Projekt. Der Code stammt aus der styles.xml
Datei im res/values
Ordner.
<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>
Was dies oben Code tut , ist das Standard - Überlauf - Symbol ersetzen mit dem, was drawable Sie haben , dass gestattet ic_menu_moreoverflow
. Wenn Sie es schnell testen möchten, verwenden Sie den Dateinamen des Startsymbols Ihrer App, um zu verdeutlichen, wie es funktioniert.
Eine nützliche Ressource für den Versuch, das ActionBar
Styling zu verstehen , ist:
Dort können Sie bestimmte Farben definieren, die für Ihr Überlaufsymbol verwendet werden sollen, und die ZIP-Datei enthält die richtige styles.xml
Datei für Sie.
Für die Farbänderung des Überlaufsymbols können Sie einfach hinzufügen
toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));
oder
toolbar.setOverflowicon(getDrawable(R.id.redIcon));
Das Symbol wird geändert, die gewünschte Farbe ausgewählt und als Überlaufsymbol festgelegt.
Nach langer Suche bekam ich die Anleitung, der ich folgen musste:
Fügen Sie das Element innerhalb des Themas in der Datei theme.xml hinzu:
<item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
Fügen Sie das Symbol im Stil in derselben Datei hinzu, die ich meine theme.xml:
<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/icon_menu</item>
</style>
Überprüfen Sie das benutzerdefinierte Symbol, das Sie ändern möchten
Es hat bei mir funktioniert