Cómo diseñar los elementos de menú en una barra de acción de Android

Ha habido muchas preguntas sobre el estilo en las barras de acción, pero las que he encontrado están relacionadas con el estilo de las pestañas, o tienen respuestas que no funcionan para mí.

La pregunta es muy simple. Quiero ser capaz de cambiar el estilo de texto (incluso el color) de los elementos del menú en la barra de acción.

He leído esto: http://android-developers.blogspot.com/2011/04/customizing-action-bar.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+blogspot%2FhsDu+%28Android+Developers+Blog% 29

Y esta pregunta: Estilo de una barra de acción en Android Honeycomb

De lo que he puesto juntos una aplicación de prueba que estoy utilizando para tratar de obtener los elementos del menú para cambiar. Utiliza todos los valores predeterminados para una aplicación creada en el complemento android de eclipse, excepto por lo siguiente.

Un archivo de estilos:

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyAppTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyActionBar</item> </style> <style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:titleTextStyle">@style/MyActionBar.TitleTextStyle</item> <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> </style> <style name="MyActionBar.TitleTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">#F0F</item> <item name="android:textStyle">bold</item> <item name="android:textSize">24dip</item> </style> <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">#F0F</item> <item name="android:textStyle">bold</item> <item name="android:textSize">24dip</item> </style> </resources> 

Un menú para la barra de acción:

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:showAsAction="always|withText" android:icon="@android:drawable/ic_menu_edit" android:id="@+id/menu_item1" android:title="menu_item1"></item> <item android:showAsAction="always|withText" android:icon="@android:drawable/ic_menu_edit" android:id="@+id/menu_item2" android:title="menu_item2"></item> </menu> 

La actividad principal:

 public class Main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } /** * Create the options menu that is shown on the action bar */ @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); return true; } } 

La aplicación compila y ejecuta. El estilo de la barra de acción de texto título funciona perfectamente (es que la sombra de color rosa # F0F he definido). Los elementos de menú no cambian aparecen pero con el estilo predeterminado (luz holo).

Qué estoy haciendo mal ?

En lugar de tener el elemento android:actionMenuTextAppearance bajo el estilo de barra de acción, muévalo debajo del tema de la aplicación.

Sé que es un viejo post, pero por si alguien está buscando aquí. He añadido esto a mi style.xml y funcionó para mí.

 <!-- This is the main theme parent --> <style name="MyTabStyle"> <item name="android:actionBarTabTextStyle">@style/MyTabTextStyle</item> </style> <style name="MyTabTextStyle" parent="@android:style/Widget.ActionBar.TabText"> <item name="android:textAppearance">@android:style/TextAppearance.Medium</item> <item name="android:textSize">14sp</item> <item name="android:textStyle">bold</item> <item name="android:textColor">@color/pressed_skylogtheme</item> </style> 

Creo que el código de abajo

 <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> 

Debe estar en la sección MyAppTheme .

Tienes que cambiar

 <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 

a

 <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Menu"> 

así como. Esto funciona para mí.

Chris respuesta está trabajando para mí …

Mis valores-v11 / styles.xml archivo:

 <resources> <style name="LightThemeSelector" parent="android:Theme.Holo.Light.DarkActionBar"> <item name="android:actionBarStyle">@style/ActionBar</item> <item name="android:editTextBackground">@drawable/edit_text_holo_light</item> <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> </style> <!--sets the point size to the menu item(s) in the upper right of action bar--> <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textSize">25sp</item> </style> <!-- sets the background of the actionbar to a PNG file in my drawable folder. displayOptions unset allow me to NOT SHOW the application icon and application name in the upper left of the action bar--> <style name="ActionBar" parent="@android:style/Widget.Holo.ActionBar"> <item name="android:background">@drawable/actionbar_background</item> <item name="android:displayOptions"></item> </style> <style name="inputfield" parent="android:Theme.Holo.Light"> <item name="android:textColor">@color/red2</item> </style> </resources> 

Mi conjetura es que usted tiene que también estilo las vistas que se generan de la información del menú en su onCreateOptionsMenu (). El estilo aplicado hasta ahora está funcionando, pero dudo que los elementos del menú, cuando se procesen con texto, usen un estilo que sea el mismo que la parte del título de ActionBar.

Es posible que desee ver Menu.getActionView () para obtener la vista de la acción del menú y, a continuación, ajustarlo en consecuencia.

Hice de esta manera:

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="actionMenuTextAppearance">@style/MenuTextAppearance</item> <item name="android:actionMenuTextAppearance">@style/MenuTextAppearance</item> <item name="actionMenuTextColor">@color/colorAccent</item> </style> <style name="MenuTextAppearance" > <item name="android:textAppearance">@android:style/TextAppearance.Large</item> <item name="android:textSize">20sp</item> <item name="android:textStyle">bold</item> </style> 
  • Uso del generador de estilo Action bar con generador de colores holo
  • Lengüetas de la barra de la acción de Android
  • Android personalizado Overflow-menu (Sin barra de acción y sin menubutton)
  • Control dinámico de elementos de acción / menú en ActionBar
  • ActionBarCompat - Acción de icono de aplicación (clic) no funciona en dispositivos 4.0
  • El botón de retroceso de la barra de acción no se va a volver en Android
  • Cómo mostrar el fragmento seleccionado en la pestaña de la barra de acción
  • Android: ocultar la barra de acción durante el inicio y luego volver a mostrarla?
  • ¿Cómo mostrar la casa predeterminada como indicador ascendente mediante la barra de acción de soporte?
  • Configurar OnClickListener en el icono de inicio de la barra de acción hace que el icono pierda el estado de la prensa
  • Actividad de Android sin ActionBar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.