9

我想知道如何更改StatusBar颜色,取决于当前活动片段(5.0棒棒糖)。目前,我更改ActionBar的颜色取决于我所在的碎片,但现在我想要改变StatusBar的颜色 - 以便在棒棒糖设备上看起来不错。在片段更改时更改状态栏颜色[Android Lollipop]

我试过使用setStyle以编程方式更改主题取决于片段,但它似乎并没有改变状态栏的颜色。

任何想法,将不胜感激!

+0

你能展示你试过的代码吗? – 2014-11-04 19:11:19

+0

这有点混乱,但本质上我有一个FragmentData对象,它存储了每个片段所需的样式(以及其他内容)。每当片段发生变化,我将SetStyle设置为该对象中的mStyle字段。只是一个侧面说明:这是工作来改变操作栏的颜色,只是状态栏的颜色似乎没有设置。 – user3634770 2014-11-04 19:14:25

+0

当然是的。这不仅仅是为了我 - 这是为了任何人阅读这个问题。 – 2014-11-04 19:18:26

回答

17

您是否尝试过使用Window.setStatusBarColor更改状态栏的颜色?例如,您可以执行以下操作,以编程方式将状态栏颜色更改为红色。

getWindow().setStatusBarColor(Color.RED); 

setStatusBarColor的文档可以找到here。您还可以阅读有关如何Customize the Status Bar的文档。

注意:此方法只适用于棒棒糖或以上。

如果您看到意想不到的颜色,请确保您传递的整数值是颜色整数而不是资源ID。

getWindow().setStatusBarColor(getResources().getColor(R.color.custom_color)); // RIGHT 
getWindow().setStatusBarColor(R.color.custom_color); // WRONG 
+0

因此,'getWindow().setStatusBarColor(...)'可以改变状态栏的颜色,但不能设置正确的颜色。例如,当我将状态栏颜色设置为橙色时,它会以紫色显示。任何想法发生了什么? – user3634770 2014-11-07 19:37:28

+0

你可以在你的问题上面添加你的代码吗? – ztan 2014-11-07 19:45:40

+0

有没有办法在android 4.4中做同样的事情? – 2015-02-26 09:12:57