android android-actionbar menuitem lowercase

Android ActionBar MenuItem LowerCase



android-actionbar (6)

Quiero hacer el título de MenuItem en la barra de acciones para LowerCase.

mi menu.xml

<item android:id="@+id/register" android:title="Register" android:showAsAction="ifRoom|withText"/> <item android:id="@+id/unregister" android:title="Unregister" android:showAsAction="ifRoom|withText"/>

En ActionBar, ve "REGISTER" y "UNREGISTER", pero quiero que se vea como "Register" y "Unregister".

¿Es posible hacer que la primera letra, las letras superior y siguiente, más abajo en MenuItem? ¿Y cómo puedo hacer eso?


Agregue lo siguiente a uno de sus valores archivos xml:

<bool name="abc_config_actionMenuItemAllCaps">false</bool>


Desde el código fuente en android.support.v7.internal.view.menu.ListMenuItemView

//Set text appearance in constructor from style ... mTextAppearance = a.getResourceId(R.styleable.MenuView_android_itemTextAppearance, -1); ... //Apply text appearance to view item mTitleView = (TextView) findViewById(R.id.title); if (mTextAppearance != -1) { mTitleView.setTextAppearance(mTextAppearanceContext, mTextAppearance); }

En proyecto: cree un tema emergente y aplíquelo en la creación de ventanas emergentes para algunas ventanas emergentes personalizadas si se planea usar esta apariencia en toda la aplicación y luego colóquela en el tema principal de la aplicación.

<style name="PopupTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="android:itemTextAppearance">@style/FontStyle</item> </style> ... Context context = new ContextThemeWrapper(getActivity(), R.style.PopupTheme); MenuPopupHelper optionsMenu = new MenuPopupHelper(context, menuBuilder, anchorView); ...


Para hacer que el texto del menú aparezca en minúsculas como "ELEMENTO DEL MENÚ" en "Elemento del menú", esta es mi solución.

En res >> values ​​>> styles.xml agrega lo siguiente:

<style name="MenuItemTextAppearance" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu"> <item name="textAllCaps">false</item> </style>

Después de que pueda llamarlo en su AppTheme:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">...</item> <item name="colorPrimaryDark">...</item> <item name="colorAccent">...</item> <item name="actionMenuTextAppearance">@style/MenuItemTextAppearance</item> </style>

Espero que esto ayude. :)


Probé algunas de las otras respuestas aquí pero no tuve suerte (no estoy usando el sherlock de la barra de acción). Como se menciona en los comentarios, en las bibliotecas de soporte más nuevas, las soluciones anteriores no parecen funcionar. Para resolver este problema, agregué mi propia ActionLayout a los elementos del menú.

<item android:id="@+id/done" app:showAsAction="always" android:title="@string/yourTitle"/>

Luego en mi código hice algo como esto.

final MenuItem done = menu.findItem(R.id.done); done.setActionView(R.layout.menu_item_kingfisher_text_view); TextView doneTextView = (TextView) done.getActionView();

Luego puede hacer lo que quiera con la vista de texto y evitar que el texto sea mayúscula. Esto definitivamente no es ideal, pero si necesita una solución para este problema, esto funciona.


Solo para completar la respuesta, si usa AppCompat, el estilo principal es:

<style name="MyMenuTextAppearance" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu"> <item name="android:textAllCaps">false</item> </style>


Solución para la implementación nativa de ActionBar:

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme" parent="android:Theme.Holo"> <item name="android:actionMenuTextAppearance">@style/MyMenuTextAppearance</item> </style> <style name="MyMenuTextAppearance" parent="android:TextAppearance.Holo.Widget.ActionBar.Menu"> <item name="android:textAllCaps">false</item> </style> </resources>

Si está utilizando ActionBarSherlock hay dos enfoques diferentes:

1) Cree un recurso booleano abs__config_actionMenuItemAllCaps y abs__config_actionMenuItemAllCaps en false :

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="abs__config_actionMenuItemAllCaps">false</bool> </resources>

2) O crea un tema con la actionMenuTextAppearance invalidadaMenuTextAppearance y actionMenuTextAppearance en AndroidManifest.xml :

<?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme" parent="Theme.Sherlock"> <item name="actionMenuTextAppearance">@style/MyMenuTextAppearance</item> <item name="android:actionMenuTextAppearance">@style/MyMenuTextAppearance</item> </style> <style name="MyMenuTextAppearance" parent="TextAppearance.Sherlock.Widget.ActionBar.Menu"> <item name="android:textAllCaps">false</item> </style> </resources>

TEN EN CUENTA : hay un error en ActionBarSherlock que fuerza a MenuItem a estar en mayúsculas en pre-ICS ( https://github.com/JakeWharton/ActionBarSherlock/issues/969 ). He enviado el parche pero no está fusionado en este momento. Por ahora puede usar mi fork: https://github.com/alexander-mironov/ActionBarSherlock/tree/dev , actualizaré esta respuesta cuando mi código se fusione en el repositorio principal.

ACTUALIZACIÓN: mi solución se ha fusionado en el repositorio principal de ActionBarSherlock.