Ответы:
Вы можете со стилем, но вы должны добавить его в основное объявление темы.
<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>
Вы также можете изменять его динамически, о чем я подробно расскажу здесь:
parent="Widget.Sherlock.ActionButton.Overflow"
parent="@style/Widget.AppCompat.ActionButton.Overflow"
похоже, работает для меня.
Для тех, кто не может заставить его работать, попробуйте это БЕЗ пространства имен "android:".
<item name="actionOverflowButtonStyle">@style/OverFlow</item>
Измените свой собственный значок переполнения панели действий в 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>
Поместите пользовательскую тему "MyTheme" в тег приложения AndroidManifest.xml.
<application
android:name="com.example.android.MainApp"
android:theme="@style/AppTheme">
</application>
Радоваться, веселиться.@.@
Независимо от того, что я пытался сделать styles.xml
, ни одно из решений у меня не помогло. В конце концов, если у вас есть AppCompat 23+, что вам нужно, это самый простой способ, который действительно работает:
toolbar.setOverflowIcon(drawable);
Ответ @adneal правильный (так что это просто объяснение сообщества вики, чтобы расширить его).
Один из комментариев предполагает, что может быть непонимание того, как это сделать, поэтому мой ответ - просто еще один пример того, как переопределить изображение значка Overflow.
Код ниже основан на стилях шаблона из примера ADT New Android Project. Код взят из styles.xml
файла в 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>
Этот код выше заменяет значок переполнения по умолчанию на любой имеющийся у вас объект с именем ic_menu_moreoverflow
. Если вам нужен быстрый способ проверить это, используйте имя файла значка запуска вашего приложения, чтобы было понятно, как оно работает.
Полезный ресурс для понимания ActionBar
стиля:
Здесь вы можете определить определенные цвета, которые будут использоваться для вашего значка переполнения, и ZIP-файл будет содержать нужный styles.xml
вам файл.
Для изменения цвета значка переполнения вы можете просто добавить
toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));
или
toolbar.setOverflowicon(getDrawable(R.id.redIcon));
Он изменит значок, выберет любой желаемый цвет и установит значок переполнения.
После долгих поисков я получил рекомендации, которым нужно следовать:
Добавьте элемент в тему в theme.xml:
<item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
Добавьте иконку в стиле в том же файле, я имею в виду theme.xml:
<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/icon_menu</item>
</style>
Проверьте пользовательский значок, который вы хотите изменить
Это сработало для меня