Opção 1) A maneira rápida e fácil (apenas barra de ferramentas)
Desde appcompat-v7-r23, você pode usar os seguintes atributos diretamente em seu Toolbar
ou em seu estilo:
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
Se o seu SDK mínimo for 23 e você usar o nativo, Toolbar
basta alterar o prefixo do namespace para android
.
Em Java, você pode usar os seguintes métodos:
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
Esses métodos usam uma cor int e não um ID de recurso de cor!
Opção 2) Substituir os atributos de tema e estilo da Barra de Ferramentas
layout / 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>
Socorro! Meus ícones mudaram de cor também!
@PeterKnut relatou que isso afeta a cor do botão de estouro, botão da gaveta de navegação e botão voltar. Também muda a cor do texto de SearchView
.
Em relação às cores do ícone: O colorControlNormal
herda de
android:textColorPrimary
para temas escuros (branco sobre preto)
android:textColorSecondary
para temas leves (preto no branco)
Se você aplicar isso ao tema da barra de ação , poderá personalizar a cor do ícone.
<item name="colorControlNormal">#de000000</item>
Havia um bug no appcompat-v7 até r23 que exigia que você também substituísse a contraparte nativa como:
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
Socorro! Meu SearchView está uma bagunça!
Observação: esta seção possivelmente está obsoleta.
Como você usa o widget de pesquisa que, por algum motivo, usa uma seta para trás diferente (não visualmente, tecnicamente) da incluída com appcompat-v7, você deve configurá-lo manualmente no tema do aplicativo . Os drawables da biblioteca de suporte são tingidos corretamente. Caso contrário, seria sempre branco.
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
Quanto ao texto da visualização de pesquisa ... não há maneira fácil. Depois de vasculhar sua fonte, encontrei uma maneira de chegar à visualização de texto. Eu não testei isso, então, por favor, deixe-me saber nos comentários se isso não funcionou.
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
Bônus: substitui atributos de estilo e tema do ActionBar
O estilo apropriado para uma barra de ação appcompat-v7 de ação padrão seria assim:
<!-- 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
e usá-lo como um tema , o plano de fundo de cada elemento filho também será colorido.Aqui está minha solução se você precisar alterar apenas a cor do título e não a cor do texto no widget de pesquisa.
layout / toolbar.xml
values / themes.xml
Da mesma forma, você também pode definir subtitleTextAppearance.
fonte
Se você oferece suporte à API 23 e superior, agora pode usar o atributo titleTextColor para definir a cor do título da barra de ferramentas.
layout / toolbar.xml
MyActivity.java
fonte
Configurando
app:titleTextColor
meusandroid.support.v7.widget.Toolbar
trabalhos para mim no Android 4.4 e no 6.0 também comcom.android.support:appcompat-v7:23.1.0
:fonte
Isso estava me irritando um pouco e não gostei de nenhuma das respostas dadas, então dei uma olhada na fonte para ver como funciona.
FractalWrench está no caminho certo, mas pode ser usado abaixo da API 23 e não precisa ser definido na barra de ferramentas por conta própria.
Como já foi dito, você pode definir um estilo na barra de ferramentas com
e nesse estilo você pode definir a cor do texto do título com
para pré API 23 ou para 23+
Xml completo
Aqui estão todos os atributos que podem ser definidos para uma barra de ferramentas
fonte
Maneira mais simples de alterar a
Toolbar
cor do título com emCollapsingToolbarLayout
.Adicione os estilos abaixo para
CollapsingToolbarLayout
styles.xml
fonte
Se você pode usar appcompat-v7 app: titleTextColor = "# fff">
fonte
Isso funcionou para mim
fonte
Crie uma barra de ferramentas em seu xml ... toolbar.xml:
Em seguida, adicione o seguinte em seu toolbar.xml:
Remeber @ color / colorText é simplesmente seu arquivo color.xml com o atributo color denominado colorText e sua cor. Esta é a melhor maneira de chamar suas strings em vez de codificar sua cor dentro de sua barra de ferramentas.xml. Você também tem outras opções para modificar seu texto, como: textAppearance ... etc ... basta digitar app: text ... e a intelisense lhe dará opções no android studio.
sua barra de ferramentas final deve ter a seguinte aparência:
NB: Esta barra de ferramentas deve estar dentro do seu activity_main.xml.Easy Peasie
Outra opção é fazer tudo em sua classe:
Boa sorte
fonte
Para mudar a cor
/>
fonte
Lutei com isso por algumas horas hoje porque todas essas respostas estão meio desatualizadas agora, com MDC e os novos recursos de temas, eu simplesmente não conseguia ver como substituir o
app:titleTextColor
aplicativo como um estilo.A resposta é que
titleTextColor
está disponível no styles.xml se você está substituindo algo que herda deWidget.AppCompat.Toolbar
. Hoje eu acho que a melhor escolha deveria serWidget.MaterialComponents.Toolbar
:E no tema do seu aplicativo, especifique o toolbarStyle:
Agora você pode deixar o xml onde especificou a barra de ferramentas inalterada. Por muito tempo pensei que mudar a
android:textColor
aparência do texto do título da barra de ferramentas deveria funcionar, mas por algum motivo não funciona.fonte
fonte
}
Ou uso simples de MainActivity:
style.xml
fonte
Faça com
toolbar.setTitleTextAppearance(context, R.style.TitleTextStyle);
// este é o estilo onde você pode personalizar seu esquema de cores
fonte
Muito simples, funcionou para mim (título e ícone brancos):
fonte
Com a Biblioteca de Componentes de Materiais, você pode usar o
app:titleTextColor
atributo.No layout, você pode usar algo como:
Você também pode usar um estilo personalizado :
com (ampliando o
Widget.MaterialComponents.Toolbar.Primary
estilo):ou (estendendo o
Widget.MaterialComponents.Toolbar
estilo):Você também pode substituir a cor definida pelo estilo usando o
android:theme
atributo (usando oWidget.MaterialComponents.Toolbar.Primary
estilo):com:
ou (usando o
Widget.MaterialComponents.Toolbar
estilo):com:
fonte