Opción 1) La forma rápida y sencilla (solo barra de herramientas)
Desde appcompat-v7-r23, puede utilizar los siguientes atributos directamente en Toolbar
su estilo o en su estilo:
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
Si su SDK mínimo es 23 y usa nativo, Toolbar
simplemente cambie el prefijo del espacio de nombres a android
.
En Java puede utilizar los siguientes métodos:
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
Estos métodos toman un color int, no un ID de recurso de color.
Opción 2) Anular el estilo de la barra de herramientas y los atributos del tema
diseño / xxx.xml
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.MyApp.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
style="@style/Widget.MyApp.Toolbar.Solid"/>
valores / estilos.xml
<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/actionbar_color</item>
<item name="android:elevation" tools:ignore="NewApi">4dp</item>
<item name="titleTextAppearance">...</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
<!-- Parent theme sets colorControlNormal to textColorPrimary. -->
<item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>
¡Ayuda! ¡Mis iconos también cambiaron de color!
@PeterKnut informó que esto afecta el color del botón de desbordamiento, el botón del cajón de navegación y el botón de retroceso. También cambia el color del texto de SearchView
.
En cuanto a los colores de los iconos: la colorControlNormal
herencia de
android:textColorPrimary
para temas oscuros (blanco sobre negro)
android:textColorSecondary
para temas claros (negro sobre blanco)
Si aplica esto al tema de la barra de acciones , puede personalizar el color del icono.
<item name="colorControlNormal">#de000000</item>
Hubo un error en appcompat-v7 hasta r23 que requirió que también anularas la contraparte nativa de esta manera:
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
¡Ayuda! ¡Mi SearchView es un desastre!
Nota: esta sección posiblemente esté obsoleta.
Dado que usa el widget de búsqueda que, por alguna razón, usa una flecha hacia atrás diferente (no visualmente, técnicamente) que la que se incluye con appcompat-v7, debe configurarlo manualmente en el tema de la aplicación . Los dibujables de la biblioteca de soporte se tiñen correctamente. De lo contrario, siempre sería blanco.
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
En cuanto al texto de la vista de búsqueda ... no hay una manera fácil. Después de buscar en su fuente, encontré una manera de acceder a la vista de texto. No he probado esto, así que avíseme en los comentarios si esto no funcionó.
SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color
Bonificación: anule el estilo de ActionBar y los atributos del tema
El estilo apropiado para una barra de acción de acción predeterminada appcompat-v7 se vería así:
<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
<item name="background">@color/actionbar_color</item> <!-- No prefix. -->
<item name="elevation">4dp</item> <!-- No prefix. -->
<item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>
<style name="Theme.MyApp" parent="Theme.AppCompat">
<item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
<item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>
ThemeOverlay
y lo usara como tema , entonces el fondo de cada elemento hijo también se colorearía.Aquí está mi solución si necesita cambiar solo el color del título y no el color del texto en el widget de búsqueda.
layout / toolbar.xml
valores / themes.xml
De manera similar, también puede configurar subtitleTextAppearance.
fuente
Si es compatible con API 23 y superior, ahora puede usar el atributo titleTextColor para establecer el color del título de la barra de herramientas.
layout / toolbar.xml
MyActivity.java
fuente
Configurando
app:titleTextColor
misandroid.support.v7.widget.Toolbar
trabajos para mí en Android 4.4 y en 6.0 también concom.android.support:appcompat-v7:23.1.0
:fuente
Esto me molestó un rato y no me gustó ninguna de las respuestas dadas, así que eché un vistazo a la fuente para ver cómo funciona.
FractalWrench está en el camino correcto, pero se puede usar por debajo de API 23 y no tiene que configurarse en la barra de herramientas.
Como han dicho otros, puede establecer un estilo en la barra de herramientas con
y en ese estilo puede establecer el color del texto del título con
para pre API 23 o para 23+
Xml completo
Aquí están todos los atributos que se pueden configurar para una barra de herramientas.
fuente
La forma más sencilla de cambiar el
Toolbar
color del título con inCollapsingToolbarLayout
.Agregue los siguientes estilos a
CollapsingToolbarLayout
styles.xml
fuente
Si puede usar la aplicación appcompat-v7 : titleTextColor = "# fff">
fuente
Esto funcionó para mi
fuente
Cree una barra de herramientas en su xml ... toolbar.xml:
Luego agregue lo siguiente en su toolbar.xml:
Remeber @ color / colorText es simplemente su archivo color.xml con el atributo de color llamado colorText y su color. Esta es la mejor manera de llamar a sus cadenas en lugar de codificar su color dentro de su toolbar.xml. También tienes otras opciones para modificar tu texto, como: textAppearance ... etc ... simplemente escribe app: text ... e intelisense te dará opciones en Android Studio.
su barra de herramientas final debería verse así:
NB: Esta barra de herramientas debe estar dentro de su activity_main.xml.Easy Peasie
Otra opción es hacerlo todo en tu clase:
Buena suerte
fuente
Para cambiar el color
/>
fuente
Luché con esto durante unas horas hoy porque todas estas respuestas están un poco desactualizadas ahora, con MDC y las nuevas capacidades de temática, simplemente no pude ver cómo anular la
app:titleTextColor
aplicación como estilo.La respuesta es que
titleTextColor
está disponible en styles.xml si está anulando algo que heredaWidget.AppCompat.Toolbar
. Hoy creo que se supone que la mejor opción esWidget.MaterialComponents.Toolbar
:Y en el tema de su aplicación, especifique el estilo de la barra de herramientas:
Ahora puede dejar el xml donde especifica la barra de herramientas sin cambios. Durante mucho tiempo pensé que cambiar la
android:textColor
apariencia del texto del título de la barra de herramientas debería funcionar, pero por alguna razón no es así.fuente
fuente
}
O uso simple de MainActivity:
style.xml
fuente
Hazlo con
toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);
// este es el estilo en el que puedes personalizar tu combinación de colores
fuente
Muy simple, esto funcionó para mí (título e ícono en blanco):
fuente
Con la biblioteca de componentes de materiales puede utilizar el
app:titleTextColor
atributo.En el diseño puedes usar algo como:
También puede utilizar un estilo personalizado :
con (ampliando el
Widget.MaterialComponents.Toolbar.Primary
estilo):o (ampliando el
Widget.MaterialComponents.Toolbar
estilo):También puede anular el color definido por el estilo usando el
android:theme
atributo (usando elWidget.MaterialComponents.Toolbar.Primary
estilo):con:
o (usando el
Widget.MaterialComponents.Toolbar
estilo):con:
fuente