如何在android中设置状态栏颜色

时间:2015-02-28 11:21:10

标签: android statusbar

我已使用以下代码设置状态栏颜色。将此代码放在values-v21文件夹

`

<style name="AppTheme" parent="android:Theme.Material">
      <item name="android:windowNoTitle">true</item>
      <item name="android:windowContentOverlay">@null</item>
  <item name="android:colorPrimaryDark">#263143</item>

<item name="android:colorAccent">@color/accent</item>

</style> 

` 但它使得追随 错误:错误:找不到与给定名称匹配的资源:attr&#39; colorPrimaryDark&#39;。 怎么解决这个问题?

2 个答案:

答案 0 :(得分:1)

您应该从android

中删除android:colorPrimaryDark前缀
<item name="colorPrimaryDark">#263143</item>
  

我们现在在所有平台上使用Toolbar / ActionBar的支持实现,这意味着我们不再阅读与操作栏相关的任何android: attributes

来源:https://chris.banes.me/2014/10/17/appcompat-v21/#theming

此外,Theme.Material仅适用于API 21.如果您希望它适用于较低的API,请改用AppCompat主题。

  

材料主题仅适用于Android 5.0(API级别21)及更高版本。 v7支持库为某些小部件提供了主题和材料设计样式,并支持自定义调色板。

来源:https://developer.android.com/training/material/theme.html

答案 1 :(得分:0)

StatusBar不适用于API级别低于21的设备。如果您的最低API级别低于此级别,则必须对Java源文件进行一些更改。转到要添加状态栏颜色的源文件。然后使用注释OnCreate()包装@TargetApi(Build.VERSION_CODES.LOLLIPOP)方法。

然后在方法内部,您必须检查设备是否有能力,如下所示。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
 window.setStatusBarColor(getResources().getColor(R.color.Statusbar));
    }