[androidbrasil-dev] Barra no topo do Android - Mudar de cor

750 views
Skip to first unread message

Gink Labrev

unread,
May 12, 2015, 11:14:02 AM5/12/15
to androidb...@googlegroups.com
Fala,

Qual o nome daquela barra no topo do Android aonde exibe as informações como WiFi, 4G, hora, etc ... ?
Percebo que algumas apps no material design mudam a cor desta barra para o mesmo da Toolbar.
Mas uso a toolbar e a cor dessa barra não muda. Alguém saberia como fazer essa mudança ?

Abs,

Rudson Lima

unread,
May 12, 2015, 12:09:16 PM5/12/15
to androidb...@googlegroups.com

O que você procura é isso Window.setStatusBarColor(), e aqui tem mais informações do Material Design

http://developer.android.com/training/material/index.html

Alexandre M. Carvalho Petraglia

unread,
May 12, 2015, 1:23:28 PM5/12/15
to androidb...@googlegroups.com
Geralmente, essa barra de status tem um tom acima da cor da toolbar.
Caso você esteja usando o tema do material deisgn, pode fazer o seguinte:

No styles.xml terá o seguinte:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
Então você cria um arquivo colors.xml
<resources>
<color name="primary">#009688</color>
<color name="primary_dark">#00796B</color>
<color name="accent">#FFC107</color>
</resources>
E a toolbar, você coloca o background: android:background="@color/primary"
Então a toolbar terá a cor colorPrimary e a barra de status do android ficará na cor do "colorPrimaryDark".
Caso deseje as duas na mesma cor, basta mudar o colorPrimaryDark pra mesma cor do colorPrimary.
Abraço,
Alexandre


2015-05-12 13:09 GMT-03:00 Rudson Lima <rudso...@gmail.com>:

O que você procura é isso Window.setStatusBarColor(), e aqui tem mais informações do Material Design

http://developer.android.com/training/material/index.html

--
You received this message because you are subscribed to the Google Groups "Android Brasil - Dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to androidbrasil-...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Gink Labrev

unread,
May 12, 2015, 7:22:59 PM5/12/15
to androidb...@googlegroups.com
@rudson e @alexandre

Valeu. Fiz assim:

if (Build.VERSION.SDK_INT >= 21) {
    Window window = getWindow();
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(getResources().getColor(R.color.material_blue_700));
}
Sabe se é possível deixar definido no xml ?


Abs,

Rudson Lima

unread,
May 12, 2015, 8:15:01 PM5/12/15
to androidb...@googlegroups.com

A dica do Alexandre é via XML.

Gink Labrev

unread,
May 12, 2015, 10:04:29 PM5/12/15
to androidb...@googlegroups.com
Opa. Foi mal.
Então não captei alguma coisa.

Tenho o background  da Toolbar definido da seguinte forma: <android.support.v7.widget.Toolbar ... android:background="@color/material_blue_500" />
Mas isso não altera a cor do status bar.

O theme está assim:

<style name="BlueBarMaterialDesignTheme" parent="Theme.AppCompat.Light.NoActionBar">
        ...
        <item name="colorPrimary">@color/material_blue_500</item>
        <item name="colorPrimaryDark">@color/material_blue_700</item>
        <item name="colorAccent">@color/material_blue_A200</item>
    </style>

Não entendi porque não funciona. 
Teria que manter a nomenclatura @color/primary e @color/primary_dark para funcionar ?

2015-05-12 21:14 GMT-03:00 Rudson Lima <rudso...@gmail.com>:

A dica do Alexandre é via XML.

--

Alexandre M. Carvalho Petraglia

unread,
May 12, 2015, 10:40:35 PM5/12/15
to androidb...@googlegroups.com
A princípio, você precisa manter o colorPrimaryDark na definição do style e não na definição da cor.

Na documentação diz o seguinte:

"To set a custom color for the status bar, use the android:statusBarColor attribute when you extend the material theme. By default, android:statusBarColor inherits the value of android:colorPrimaryDark."

Ou seja, pra customizar a cor do status bar, você usa o statusBarColor. Mas como o statusBarColor herda do colorPrimaryDark, você definindo este último seria o suficiente.

Fiz um teste aqui no aplicativo que estou fazendo, e funcionou usando a sua nomenclatura.

Também não entendi o porque de não funcionar.

Versões pré-lollipop não funciona. Você está rodando no Lollipop ou está usando compatibilidade e testando em versões pre-lollipop?
Eu rodei o aplicativo em um emulador com versão pré-lollipop pra confirmar e não funciona mesmo não. Só pra lollipop!




Rudson Lima

unread,
May 13, 2015, 4:05:50 AM5/13/15
to androidb...@googlegroups.com

@Gink já deu pra perceber que você nem abriu o link que mandei :'(

 Só isso aqui já seria o bastante para a cor da statusBar, lembrando que a cor só vai mudar da api 21+

<item name="colorPrimaryDark">color</item>

Gink Labrev

unread,
May 13, 2015, 9:32:39 PM5/13/15
to androidb...@googlegroups.com
Pessoal,

Valeu pela explicação.Então testei de novo e não sei dizer porque não funciona. A cor do status bar não está herdando de colorPrimaryDark.
Não é problema do Android, pois a versão é 5.0 e funciona programaticamente. 
Mas o chato é fazer isso em todas Activities (ou criar uma herança só por isso). Preferia já deixar no tema.

Rudson,
Tinha visto a documentação sim. O pouco que sei de Material Design aprendi por lá e pelo StackOverFlow.
Mas não vi nada ali que possa indicar o que está ocorrendo.

--

Gink Labrev

unread,
May 13, 2015, 9:36:42 PM5/13/15
to androidb...@googlegroups.com
Não sei se faz diferença, mas estou usando o appcompat-v7.

Neto Lobo

unread,
May 15, 2015, 8:36:42 AM5/15/15
to androidb...@googlegroups.com
Gink você tem a pasta values-v21 no seu projeto?
--

luciofm

unread,
May 15, 2015, 8:38:30 AM5/15/15
to androidb...@googlegroups.com
Qual o target que você está 'buildando'?

Gink Labrev

unread,
May 15, 2015, 11:50:19 AM5/15/15
to androidb...@googlegroups.com
Neto,

Não possuo. Já tentei fazer isso - inclusive adicionando a propriedade abaixo - mas não resolveu.
<item name="android:windowDrawsSystemBarBackgrounds">true</item>

luciofm,

Está assim:

android {
compileSdkVersion 21
buildToolsVersion '21.1.2'
defaultConfig {
minSdkVersion 16
targetSdkVersion 20 ... }

luciofm

unread,
May 15, 2015, 12:08:36 PM5/15/15
to androidb...@googlegroups.com

Eu chutaria que o problema é o Target SDK 20...

Alexandre M. Carvalho Petraglia

unread,
May 15, 2015, 2:36:20 PM5/15/15
to androidb...@googlegroups.com
@luciofm, isso mesmo.

Fiz um teste aqui pra confirmar, mudei o meu target de 22 pra 20 e a barra ficou..... preta!!!!!

@Gink, mude a versão target pra 21. Deve funcionar. E avisa a gente!!!

Gink Labrev

unread,
May 15, 2015, 8:45:19 PM5/15/15
to androidb...@googlegroups.com
Galerinha fera essa !
Agora funcionou ! O problema era a versão do target mesmo.
Valeu !!!
Reply all
Reply to author
Forward
0 new messages