Color del texto ActionBar

¿Cómo puedo cambiar el color del texto de la barra de acciones? Heredé el tema Holo Light, puedo cambiar el fondo de la barra de acciones pero no averiguo cuál es el atributo para modificar para cambiar el color del texto.


De acuerdo, puedo cambiar el color del texto con el atributo android: textColorPrimary pero también cambia el color del texto del menú desplegable que aparece cuando ocurre un desbordamiento en los botones de la barra de acciones. ¿Alguna idea de cómo cambiar el color de ese menú / lista desplegable?

Ok, he encontrado una mejor manera. Ahora solo puedo cambiar el color del título. También puede modificar el subtítulo.

Aquí está mi styles.xml:

      

Estaba teniendo el mismo problema que tú, es un tema Holo.Light pero quería darle un estilo al color ActionBar, así que también necesitaba cambiar el color del texto y también el título y los menús. Así que al final fui a git hub y miré el código fuente hasta que encontré el maldito estilo correcto:

        

así que ahora todo lo que tienes que hacer es establecer lo que @color/actionBarText y @drawable/actionbarbground

Encontré una manera que funciona bien con cualquier sabor de ActionBar ( Sherlock , Compat y Native ):

Simplemente use html para establecer el título y especifique el color del texto. Por ejemplo, para establecer el color del texto ActionBar en rojo, simplemente haga esto:

 getActionBar()/* or getSupportActionBar() */.setTitle(Html.fromHtml("" + getString(R.string.app_name) + "")); 

También puede usar el código hexadecimal rojo #FF0000 lugar de la palabra red . Si tiene problemas con esto, consulte Android Html.fromHtml (String) no funciona para text .


Además, si desea utilizar un recurso de color, este código se puede usar para obtener la cadena HEX correcta y eliminar la alfa si es necesario (la etiqueta de fuente no admite alfa):

 int orange = getResources().getColor(R.color.orange); String htmlColor = String.format(Locale.US, "#%06X", (0xFFFFFF & Color.argb(0, Color.red(orange), Color.green(orange), Color.blue(orange)))); 

La ID de ActionBar no está disponible directamente, por lo que tienes que hacer un poco de pirateo aquí.

 int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); if (actionBarTitleId > 0) { TextView title = (TextView) findViewById(actionBarTitleId); if (title != null) { title.setTextColor(Color.RED); } } 

lo he hecho con un simple código de línea

 actionBar.setTitle(Html.fromHtml("ActionBartitle ")); 

Añádelo a la raíz de la barra de acciones. Tuve este problema

     

actionMenuTextColor – cambia el color del texto de la barra de acciones, nunca funcionó cuando formaba parte de Widget.Styled.ActionBar , así que tuve que agregarlo a la raíz. Otros 2 atributos cambian el título y el subtítulo de una barra de acción.

Establecer una cadena HTML en la barra de acciones no funciona en el tema Material en SDK v21 +

Si desea cambiarlo, debe establecer el color del texto principal en su style.xml

     

Es un tema viejo, pero para los lectores futuros, usar ToolBar hace que todo sea muy fácil:

 Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar); toolbar.setTitle(R.string.app_name); toolbar.setTitleTextColor(getResources().getColor(R.color.someColor)); setSupportActionBar(toolbar); 

Si desea estilo los subtítulos también simplemente agregue esto en su estilo personalizado.

 @style/MyTheme.ActionBar.TitleTextStyle 

Las personas que buscan obtener el mismo resultado para la biblioteca AppCompat entonces esto es lo que utilicé:

        

La forma más directa es hacer esto en styles.xml.

La plantilla de Google styles.xml genera actualmente lo siguiente:

  

Si agrega una línea más antes de la etiqueta de cierre, como se muestra, eso cambiará el color del texto a lo que debería ser con una barra de acciones oscura:

  

Si desea personalizar el color a otra cosa, puede especificar su propio color en colors.xml o incluso usar un color incorporado de Android usando el atributo android: textColorPrimary:

   

Nota: Esto cambia el color del título y también los títulos de cualquier elemento de menú mostrado en la barra de acciones.

Esta es la solución que utilicé después de verificar todas las respuestas

       

Cambie los colores requeridos funcionará

Encontré la manera de hacerlo bien sin crear tu propio diseño en API> = 21.

Solo coloreará los textos y controlará los dibujos dentro de la barra de acciones.

Espero que sea útil para alguien.

     

Esta función funciona bien

 private void setActionbarTextColor(ActionBar actBar, int color) { String title = actBar.getTitle().toString(); Spannable spannablerTitle = new SpannableString(title); spannablerTitle.setSpan(new ForegroundColorSpan(color), 0, spannablerTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); actBar.setTitle(spannablerTitle); } 

a continuación, para usarlo simplemente alimentarlo su barra de acción y el nuevo color, es decir,

 ActionBar actionBar = getActionBar(); // Or getSupportActionBar() if using appCompat int red = Color.RED setActionbarTextColor(actionBar, red); 

Pruebe muchos métodos, en la versión baja de la API, un método factible es @color/your_color y no use el espacio de nombres de Android, espero que pueda ayudarlo

PD:

   

Intenta agregar esto en el Activity onCreate. Funciona en casi todas las versiones de Android.

  actionBar.setTitle(Html.fromHtml("Your Title")); 

o

 getSupportActionBar().setTitle(Html.fromHtml("Your Title")); 

Una buena solución es utilizar un SpannableStringBuilder y establecer el color de esa manera. Incluso puede usar diferentes colores en diferentes partes de la cadena, agregar imágenes, etc.

Probado con la nueva biblioteca de soporte.

Ver Android: Colorear parte de una cadena usando TextView.setText ()?

Esta no es la solución recomendada, ya que voy a api de Android aquí, pero como mi aplicación requiere cambiar el tema dinámicamente en condiciones xml no es posible aquí, así que tengo que hacer esto. Pero esta solución está funcionando muy bien.

Solución:–

  /** * * @author Kailash Dabhi * @email kailash09dabhi@gmail.com * */ public static void setActionbarTextColor(Activity activity, int color) { Field mActionViewField; try { mActionViewField = activity.getActionBar().getClass() .getDeclaredField("mActionView"); mActionViewField.setAccessible(true); Object mActionViewObj = mActionViewField.get(activity .getActionBar()); Field mTitleViewField = mActionViewObj.getClass().getDeclaredField( "mTitleView"); mTitleViewField.setAccessible(true); Object mTitleViewObj = mTitleViewField.get(mActionViewObj); TextView mActionBarTitle = (TextView) mTitleViewObj; mActionBarTitle.setTextColor(color); // Log.i("field", mActionViewObj.getClass().getName()); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } } 

Para Android 5 (lollipop), tendrá que usar android: actionBarPopupTheme para establecer textColor para el menú de desbordamiento.

Muchas de las respuestas están en desuso, así que actualizaré el hilo y mostraré cómo cambiar el color del texto y el color de fondo en ActionBar (barra de herramientas) y en el menú emergente ActionBar.

El último enfoque en Android (a partir de mayo de 2018) para trabajar con la barra de acciones (barra de herramientas) es usar Theme con NoActionBar y utilizar la barra de herramientas en su lugar.

así que aquí está lo que necesitas:

  1. En Activity (que extiende AppCompatActivity) declare Toolbar:

     Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(myToolbar); 
  2. Agrega la barra de herramientas en el diseño de la actividad xml. Aquí estableceremos nuestra personalización (temas sobrescritos), note android:theme="@style/ThemeOverlay.AppTheme.ActionBar" y app:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu" , harán el truco.

      
  3. En su styles.xml tendrá que sobrescribir esos dos estilos para establecer colores personalizados:

        

Eso es todo amigos

ps si me preguntas diría: SÍ, todo este tema es un desastre.