2011-07-22 15 views
14

¿Cómo cambio el icono del menú de desbordamiento en el extremo derecho de la barra de acciones como se ve en la imagen siguiente? El tema My Holo especifica este ícono de la pila negra de 3 filas por defecto y quiero algo más. No puedo encontrar una solución para esto. He revisado la documentación en http://developer.android.com/guide/topics/ui/menus.html pero no parece prestar mucha ayuda.cómo cambiar el icono de menú de desbordamiento de Android

Gracias!

"ActionBar"

+0

favor, deje que el icono solo. Una y otra vez, los usuarios atacan a los desarrolladores que no se adhieren a las convenciones básicas de la plataforma. A menos que pueda demostrar positivamente que sus usuarios rechazarán su aplicación si * no * cambia ese ícono, deje ese ícono solo. Dicho esto, de todos modos, no veo dónde se puede cambiar ese ícono. – CommonsWare

+2

La única razón por la que quería cambiar ese icono es hacerlo de color blanco en lugar de negro. El fondo de mi barra de acciones está muy oscuro en esa área y es casi imposible ver el ícono. No estoy cambiando las convenciones de la plataforma ni nada dramático como ese :) – newdev

+0

Ah, lo siento, he reaccionado de forma exagerada. Uno podría pensar que, donde sea que controle el estilo de la barra, podría cambiar ese ícono. No vi el icono en el SDK, así que no tenía una cadena de búsqueda para tratar de encontrarlo en styles.xml o kin. – CommonsWare

Respuesta

16

Definir un estilo personalizado: por ejemplo, vamos a llamarlo customoverflow.

En este estilo, configura android:src en la imagen que desea utilizar. Ahora cree un estilo con el padre Theme.holo.

En este estilo es necesario definir:

<item name="android:actionOverflowButtonStyle">@style/customoverflow</item> 

Acabo de probar esto y funciona.

+2

No es lo suficientemente personalizable. Supongamos que tiene un fondo claro con un botón de desbordamiento oscuro. Si elige un fondo oscuro para el modo de acción (CAB), no puede cambiar el botón de desbordamiento a uno liviano. –

+0

cómo lograr esto en Appcompat? –

3

me di cuenta de que se convierta en blanco si el tema de la aplicación es Holo, pero es negruzca cuando el tema es Holo.Light

Sin embargo, cambiar el estilo de la barra de acción para heredar desde Holo y el resto de la aplicación de Holo. Light no resuelve el problema, pero debe apuntar en la dirección del estilo que deberías modificar.

Lo que he intentado es:

<style name="AppThemeLight" parent="android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item> 
</style>  
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@color/header_brown</item> 
    <item name="android:titleTextStyle">@style/ActionBarTitle</item> 
    <item name="android:icon">@drawable/header</item>  
</style> 

que tienen el mismo problema y creo que esto es cerca de una solución

26

Usted puede intentar algo como esto:

<style name="MyTheme" parent="android:style/Theme.Holo.Light"> 
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 
</style> 

<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow"> 
    <item name="android:src">@drawable/my_action_bTutton_overflow</item> 
</style> 

y en AndroidManifest.xml

<application 
    android:theme="@style/MyTheme" > 
0

solución de Shalafi trabaja con algunos cambios! Necesitará especificar el tema. Holo como padre del tema, pero tiene la desventaja de cambiar el color del texto predeterminado (al menos en mis estilos).

El código debe ser modificado:

<style name="AppThemeLight" parent="android:style/Theme.Holo"> 
    <item name="android:actionBarStyle">@style/ActionBar</item> 
    <item name="android:windowContentOverlay">@drawable/actionbar_shadow</item> 
</style>  
<style name="ActionBar" parent="android:style/Widget.Holo.Light.ActionBar"> 
    <item name="android:background">@color/header_brown</item> 
    <item name="android:titleTextStyle">@style/ActionBarTitle</item> 
    <item name="android:icon">@drawable/header</item>  
</style> 
8

Si está utilizando AppCompat se puede lograr siguiendo código.

res/valores/themes.xml

<style name="MyTheme" parent="@style/Theme.AppCompat.Light"> 
    <item name="android:actionOverflowButtonStyle">@style/ActionButtonOverflow</item> 

     <!-- Support library compatibility --> 
    <item name="actionOverflowButtonStyle">@style/ActionButtonOverflow</item> 

</style> 

     <style name="ActionButtonOverflow" parent="@style/Widget.AppCompat.ActionButton.Overflow"> 
      <item name="android:src">@drawable/ic_launcher</item> 
     </style> 

y en AndroidManifest.xml

<application 
    android:theme="@style/MyTheme" > 
+2

Excelente para señalar la diferencia de compatibilidad de la biblioteca de soporte –

0

pregunta Duplicar, Changing overflow icon in the action bar

Ésta es mi respuesta como abajo,

  1. Cambia el icono de desbordamiento personalizado de la barra de acciones en estilos.xml tema personalizado

    <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> 
    
  2. Put "MyTheme" en la etiqueta de aplicación de AndroidManifest.xml

    <application 
        android:name="com.example.android.MainApp" 
        android:theme="@style/AppTheme"> 
    </application> 
    

divertirse. @. @

0

Básicamente personalizaciones temáticas disponibles en los niveles de API nuevas puede ir en res/values-vXX/styles.xml, mientras que las personalizaciones relacionadas con la compatibilidad con versiones anteriores pueden ir values/styles.xml

La solución de Shalafi funciona con algunas adiciones: Entonces agregue este código a res/values-vXX/styles.xml y res/values/styles.xml ¡y esto funcionará como Magic!

<style name="AppTheme" parent="android:style/Theme.Holo.Light"> 
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item> 
</style> 

<style name="MyActionButtonOverflow"parent="android:style/Widget.Holo.ActionButton.Overflow"> 
<item name="android:src">@drawable/your_overflow_icon</item> 
</style> 

también añadir que en AndroidManifest.xml

<application 
    android:theme="@style/AppTheme" > 
Cuestiones relacionadas