Respuestas:
Puede hacerlo con un estilo, pero debe agregarlo a la declaración principal del tema.
<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>
También puede cambiarlo dinámicamente, sobre lo que entro en detalle aquí:
Cambiar el icono del menú de desbordamiento de Android mediante programación
parent="Widget.Sherlock.ActionButton.Overflow"
parent="@style/Widget.AppCompat.ActionButton.Overflow"
parece funcionar para mí.
Para aquellos que no pueden hacer que funcione, pruebe esto SIN el espacio de nombres "android:".
<item name="actionOverflowButtonStyle">@style/OverFlow</item>
Cambie su icono de desbordamiento personalizado de Actionbar en 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>
Coloque el tema personalizado "MyTheme" en la etiqueta de la aplicación de AndroidManifest.xml
<application
android:name="com.example.android.MainApp"
android:theme="@style/AppTheme">
</application>
Que te diviertas.@.@
No importa lo que intenté hacer styles.xml
, ninguna de las soluciones funcionó para mí. Al final, si tiene AppCompat 23+, que debería, esta es la forma más fácil que realmente funciona:
toolbar.setOverflowIcon(drawable);
La respuesta de @adneal es correcta (por lo que esta es solo una explicación de la wiki de la comunidad para ampliarla).
Uno de los comentarios sugirió que puede haber un malentendido sobre cómo hacer esto, por lo que mi respuesta es solo otro ejemplo sobre cómo anular la imagen del icono de desbordamiento.
El código siguiente se basa en los estilos de plantilla del nuevo proyecto de Android de muestra de ADT. El código proviene del styles.xml
archivo en la res/values
carpeta.
<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>
Lo que hace este código anterior es reemplazar el icono de desbordamiento predeterminado con cualquier elemento de diseño que tenga que se llame ic_menu_moreoverflow
. Si desea una forma rápida de probarlo, use el nombre de archivo del icono del iniciador de su aplicación, que hará que sea obvio cómo funciona.
Un recurso útil para utilizar cuando se intenta comprender el ActionBar
estilo es:
Allí puede definir colores específicos para usar en su icono de desbordamiento, y el archivo ZIP incluirá el styles.xml
archivo correcto para usted.
Para cambiar el color del icono de desbordamiento, simplemente puede agregar
toolbar.setOverflowicon(getDrawable(R.id.whiteIcon));
o
toolbar.setOverflowicon(getDrawable(R.id.redIcon));
Cambiará el icono, elegirá el color que desee y lo establecerá como un icono de desbordamiento.
Después de una larga búsqueda, obtuve la guía a seguir:
Agregue el elemento dentro del tema en theme.xml:
<item name="android:actionBarWidgetTheme">@style/widgetStyle</item>
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
Agregue el icono en el estilo en el mismo archivo, me refiero a theme.xml:
<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/icon_menu</item>
</style>
Mira el icono personalizado que quieres cambiar.
Funcionó para mi