Cambie el color del texto del título de la barra de acción usando la luz.DarkActionBar tema en AppCompat 21


Estoy usando la biblioteca v7 appcompat 21 para usar los nuevos estilos de Material en dispositivos pre-Lollipop. Mis estilos.xml se ve así:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:textColorPrimary">#ff0000</item>
    <item name="android:textColorPrimaryInverse">#ff0000</item>
</style>

Estoy tratando de cambiar el color del texto en la barra de acciones. Pero no importa lo que ponga para textColorPrimary o textColorPrimaryInverse, el color siempre es blanco. Si heredo del Tema.AppCompat, puedo anular "textColorPrimary", y si heredo de Tema.AppCompat.Light, puedo anular "textColorPrimaryInverse". Pero ninguno funciona al usar el Luz.Tema DarkActionBar.

Definitivamente estoy usando AppTheme porque configurar atributos como colorPrimary para cambiar el color de fondo de la barra de acción funciona bien. No estoy usando ningún otro archivo de estilo de calificador de recursos.

He cavado a través de los archivos de estilos de Android y parece que no puede averiguar qué atributo para anular. Alguna idea? ¿Es esto un error appcompat?

Author: weiyin, 2014-11-11

6 answers

Puede cambiarlo con actionBarStyle atributo de tema.

<style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="actionBarStyle">@style/MyActionBar</item>
</style>

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="titleTextStyle">@style/MyTitleTextStyle</item>
</style>

<style name="MyTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">CHANGE_COLOR_HERE</item>
</style>
 144
Author: jimmy0251,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-11 18:09:54

Esto hará que el título de la barra de herramientas use color blanco:

<android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary" />

Para entender cuál es la diferencia entre ThemeOverlay.AppCompat.Dark.ActionBar y Theme.AppCompat.Light.DarkActionBar comprobar esta respuesta

Es app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" que aplica un color claro porque el color del título que se utiliza en este tema es blanco.

 21
Author: vovahost,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-28 10:00:36

Asegúrese de hacer los cambios en toda la carpeta de valores, como 'valores-v11', 'valores-v14', etc.. si es que existe.

De lo contrario, asegúrese de que el mismo 'AppTheme' que se muestra arriba se esté utilizando en la aplicación.

Por favor, publique su estilo completo.xml y el código de manifiesto que hace referencia al estilo que le dará más información sobre su problema.

También puede intentar configurar app:theme y app:popupTheme atributos en la barra de herramientas.

 4
Author: Sreekanth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-14 06:53:43

Intente agregar esto en el onCreate de su Actividad . Funciona en casi todas las versiones de Android.

Para la Actividad java:

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  

Para fragmentos:

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));
 4
Author: onexf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-14 05:28:17

Usé un archivo xml de diseño generado y no noté que el atributo android:theme estaba anulado.

¿Revisaste el tuyo? :)

 1
Author: DoruChidean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-20 10:52:07

Prueba esto:

<item name="actionMenuTextColor">@color/red</item>
 -3
Author: Roberto Betancourt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-11 18:00:48