Cambiar el tamaño del texto del elemento de menú en android

Estoy utilizando elementos de menú simples en la barra de acción mediante el uso de código siguiente en la actividad principal:

package com.kaasib.ftpclient; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.app.ActionBar; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ boolean ret; if(item.getItemId() == R.id.connection_manager){ ret = true; }else{ ret = super.onOptionsItemSelected(item); } return ret; } } 

Aquí está el menú xml en main.xml:

  <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/connection_manager" android:orderInCategory="100" android:showAsAction="collapseActionView" android:title="@string/connection_manager" android:textSize="2sp" /> </menu> 

Está trabajando excepto que no está haciendo ningún cambio en el tamaño del texto. Ahora el tamaño del texto para el elemento de menú es más grande mientras que quiero que el tamaño de la fuente sea más pequeño. Entonces, ¿qué estoy haciendo mal? ¿No debería android:textSize attributute trabajo? ¿O hay alguna otra manera de hacerlo? Creo que el tamaño del texto se debe fijar de XML no de java pues es cosa relacionada diseño. ¿Cualquier sugerencia?

¡Compruebe el siguiente enlace! ¡Puedes ver cómo crear tus propios elementos de menú personalizados!

Elementos de menú personalizados

Agregue el elemento "android: actionMenuTextAppearance" para sus actividades en su styles.xml:

 <style name="AppThemeActivity" parent="Theme.AppCompat.Light"> <item name="android:actionMenuTextAppearance">@style/yourstyle</item> ... </style> 

Aplique este estilo a su actividad en su Manifiesto:

 <activity android:theme="@style/AppThemeActivity" .../> 

O puede establecer el tamaño de fuente en el elemento valores / estilos del tema que está utilizando. En mi caso, el estilo indicado en el archivo AndroidManifest.xml es:

 android:theme="@style/AppTheme" 

Y así mi estilo para el AppTheme es ahora:

 <style name="AppTheme" parent="AppBaseTheme"> <item name="android:textSize">20sp</item> </style> 

Parece extraño que no funciona para el tema sin embargo …

Ok, por lo que esta es mi solución, puede utilizar SpannableString para buscar el texto y luego cambiar la fuente a través de RelativeSizeSpan (si desea tamaño de texto relativo a la predeterminada) o vía AbsoluteSizeSpan (si desea introducir manualmente el tamaño del texto ):

 public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); MenuInflater awesome = getMenuInflater(); awesome.inflate(R.menu.menu_main, menu); for(int i = 0; i < menu.size(); i++) { MenuItem item = menu.getItem(i); SpannableString spanString = new SpannableString(menu.getItem(i).getTitle().toString()); int end = spanString.length(); spanString.setSpan(new RelativeSizeSpan(1.5f), 0, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); item.setTitle(spanString); } return true; } 

Este ejemplo aumenta el tamaño de los textos del menú en un 50%.

Así que ha sido un largo tiempo desde que se le preguntó, pero me gusta esta solución como steven smiths respuesta cambia cada vista:

Añadir esta línea a NavigationView:

 app:itemTextAppearance="@style/MenuItems" 

Y esto a los estilos:

 <style name="MenuItems" parent="AppTheme"> <item name="android:textSize">18sp</item> <item name="android:fontFamily">sans-serif-light</item> </style> 
  • Cómo animar el icono del menú de desbordamiento de la barra de herramientas
  • Android Toggle Button en ActionBar
  • Menú ActionBar de Android con elementos de texto verticales (rotados) basados ​​en Proveedor de acciones personalizadas
  • Android - elemento de menú de hardkey selector personalizado
  • Modifique el estilo de los elementos Android en la barra ActionBar
  • Problema de menú emergente en Android ListView
  • Android Contextual Action Bar - Seleccionar todo / Deseleccionar todo
  • Cómo crear un subnivel en el menú de navegación en android?
  • Cambiar programaticamente el icono de ActionBar
  • OnOptionsItemSelected in activity se llama before onOptionsItemSelected en el fragmento. Otra forma posible?
  • ActionBar menuitem color de fondo presionado
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.