Atualizei meu SDK para a API 21 e agora o ícone de backup / backup é uma seta preta apontando para a esquerda.
Eu gostaria que fosse cinza. Como eu posso fazer isso?
Na Play Store, por exemplo, a seta é branca.
Eu fiz isso para definir alguns estilos. Eu tenho usado @drawable/abc_ic_ab_back_mtrl_am_alpha
para homeAsUpIndicator
. Esse drawable é transparente (apenas alfa), mas a seta é exibida em preto. Gostaria de saber se posso definir a cor como eu faço no DrawerArrowStyle
. Ou se a única solução é criar o meu @drawable/grey_arrow
e usá-lo para homeAsUpIndicator
.
<!-- Base application theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle" tools:ignore="NewApi">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
<item name="android:homeAsUpIndicator" tools:ignore="NewApi">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
</style>
<!-- ActionBar style -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background">@color/actionbar_background</item>
<!-- Support library compatibility -->
<item name="background">@color/actionbar_background</item>
</style>
<!-- Style for the navigation drawer icon -->
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@color/actionbar_text</item>
</style>
Minha solução até agora foi pegar o @drawable/abc_ic_ab_back_mtrl_am_alpha
, que parece branco, e pintá-lo na cor que eu desejo usando um editor de fotos. Funciona, embora eu prefira usar @color/actionbar_text
como no DrawerArrowStyle
.
fonte
homeAsUpIndicator
/@drawable/abc_ic_ab_back_mtrl_am_alpha
code para deixar a seta para trás branca. Eu prefiro isso do que invadir o Java.Respostas:
Você pode conseguir isso através do código. Obtenha o desenho da seta para trás, modifique sua cor com um filtro e defina-o como botão Voltar.
Revisão 1:
A partir da API 23 (Marshmallow), o recurso extraível
abc_ic_ab_back_mtrl_am_alpha
é alterado paraabc_ic_ab_back_material
.EDITAR:
Você pode usar esse código para alcançar os resultados desejados:
fonte
ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha)
, porquegetResources.getDrawable(int)
é obsoletoObservando a origem
Toolbar
eTintManager
,drawable/abc_ic_ab_back_mtrl_am_alpha
é colorido com o valor do atributo stylecolorControlNormal
.Eu tentei definir isso no meu projeto (com
<item name="colorControlNormal">@color/my_awesome_color</item>
no meu tema), mas ainda está preto para mim.Atualização :
Encontrei. Você precisa definir o
actionBarTheme
atributo ( nãoactionBarStyle
) comcolorControlNormal
.Por exemplo:
fonte
colorControlNormal
do tema raiz, e não no,actionBarTheme
é o caminho a seguir.Tentei todas as sugestões acima. A única maneira de conseguir alterar a cor da seta padrão do botão Voltar do ícone de navegação na barra de ferramentas é definir colorControlNormal no tema base como este. Provavelmente devido ao fato de o pai estar usando Theme.AppCompat.Light.NoActionBar
fonte
style.xml
colorControlNormal
é prefixado com .android:
É necessário adicionar um único atributo ao tema da barra de ferramentas -
Aplique este toolbar_theme à sua barra de ferramentas.
OU
você pode aplicar diretamente ao seu tema -
fonte
Basta adicionar
ao seu tema atual do aplicativo.
fonte
se usar
Toolbar
, você pode tentar issofonte
Como dito na maioria dos comentários anteriores, a solução é adicionar
<item name="colorControlNormal">@color/white</item>
ao seu tema do aplicativo. Mas confirme que você não tem outro tema definido no elemento Barra de ferramentas no seu layout.fonte
A resposta de Carles é a resposta correta, mas alguns dos métodos, como getDrawable (), getColor (), foram descontinuados no momento em que escrevi essa resposta . Portanto, a resposta atualizada seria
Após algumas outras consultas de stackoverflow, descobri que chamar ContextCompat.getDrawable () é semelhante a
E ContextCompat.getColor () é semelhante a
Link 1: ContextCompat.getDrawable ()
Link 2: ContextCompat.getColor ()
fonte
abc_ic_ab_back_material
, em vez deabc_ic_ab_back_mtrl_am_alpha
.Encontrei uma solução que funciona antes do pirulito. Defina o "colorControlNormal" dentro de "actionBarWidgetTheme" para alterar a cor homeAsUpIndicator. Modificando a resposta do rockgecko de cima para ficar assim:
fonte
No compileSdkVersoin 25, você pode fazer isso:
styles.xml
fonte
Use o método abaixo:
Agora você pode definir o drawable com:
fonte
Alterar cor do ícone de navegação do menu
No style.xml:
fonte
Outra solução que pode funcionar para você é não declarar a barra de ferramentas como a barra de ação do aplicativo (por
setActionBar
ousetSupportActionBar
) e definir o ícone de retorno no seu onActivityCreated usando o código mencionado em outra resposta nesta páginaAgora, você não receberá o
onOptionItemSelected
retorno de chamada quando pressionar o botão Voltar. No entanto, você pode se registrar para isso usandosetNavigationOnClickListener
. Isto é o que eu faço:Não tenho certeza se funcionará se você trabalhar com itens de menu.
fonte
Estávamos enfrentando o mesmo problema e tudo o que queríamos era definir o
app: collapseIcon
atributo na barra de ferramentas no final, que não encontramos, pois não está muito bem documentado :)
fonte
tente isso
chamada de função:
fonte
Isto é o que funcionou para mim:
Adicione os atributos abaixo ao seu tema.
Para alterar a seta traseira da barra de ferramentas / barra de ação acima da API 21
Para alterar a seta traseira da barra de ferramentas / barra de ação abaixo da API 21
Para alterar a seta para trás do modo de ação
Para remover a sombra da barra de ferramentas / barra de ação
Para alterar o drawable de estouro da barra de ação
Nota: 'srcCompat' é usado em vez de 'android: src' devido ao suporte extraível por vetor para API abaixo de 21
fonte
Acabei de alterar o tema da barra de ferramentas para @ style / ThemeOverlay.AppCompat.Light
e a flecha ficou cinza escuro
fonte
Aqui está como eu fiz isso em Componentes de materiais:
fonte
A solução é muito simples
Basta colocar a seguinte linha no seu estilo chamado AppTheme
Agora todo o seu código xml será mostrado abaixo (estilo padrão).
fonte
Você pode alterar a cor do ícone de navegação programaticamente assim:
fonte
Basta remover
android:homeAsUpIndicator
ehomeAsUpIndicator
do seu tema e tudo ficará bem. Ocolor
atributo no seuDrawerArrowStyle
estilo deve ser suficiente.fonte
color
atributo). A seta da gaveta é um pouco maior.A menos que haja uma solução melhor ...
O que fiz foi tirar as
@drawable/abc_ic_ab_back_mtrl_am_alpha
imagens, que parecem brancas, e pintá-las na cor que desejo usando um editor de fotos.fonte