【问题标题】:Change status / notification bar color on api below 21 android?在 21 android 以下的 api 上更改状态/通知栏颜色?
【发布时间】:2015-05-28 16:52:52
【问题描述】:

我在一些应用程序中看到状态栏颜色可以更改并与 api 级别 21 中所做的匹配。

我搜索并找到了这个解决方案 Source

<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">   
<!-- Set AppCompat’s color theming attrs -->
<item name="colorPrimary">@color/my_awesome_red</item>
<item name="colorPrimaryDark">@color/my_awesome_darker_red</item>
<!-- Other attributes -->
</style>

但它不起作用

这是我的风格代码

<style name="ToolbarTheme" parent="Theme.AppCompat">
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="colorPrimary">@color/ColorPrimary</item>
    <item name="colorPrimaryDark">@color/ColorPrimaryDark</item>
</style>

【问题讨论】:

  • StatusBar 在 api-level 21 之前无法着色。
  • 请看StackO-Post
  • 我明白这一点。但我见过带有彩色状态栏的应用程序。例如索尼随身听应用程序。
  • 索尼设备上的系统应用是什么,不是吗?索尼很可能对系统本身进行了更改。不幸的是,您作为开发人员不能使用这些。

标签: android colors android-5.0-lollipop statusbar


【解决方案1】:

如果您指的是 AcionBar 的颜色,您可以使用以下代码以编程方式更改颜色:

getSupportActionBar().setBackgroundDrawable(new Color.Drawable(Color.rgb(120,0,47)));

更改数字以选择您自己的颜色。

【讨论】:

【解决方案2】:

StatusBar 仅适用于 API 级别超过 21 的设备。如果您的最低 API 级别低于该级别,那么您必须在 java 源文件中进行一些更改。转到要添加状态栏颜色的源文件。然后用注解@TargetApi(Build.VERSION_CODES.LOLLIPOP) 包装OnCreate() 方法。

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

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

希望它有效..!!

【讨论】:

  • 这真的没有回答原来的问题,他们似乎已经知道你可以在 Lollipop 及更高版本上以这种方式更改状态栏。我能找到这类作品的唯一解决方案是这个库:github.com/jgilfelt/SystemBarTint
猜你喜欢
  • 2016-02-14
  • 2016-03-09
  • 1970-01-01
  • 2016-09-08
  • 2015-05-09
  • 2015-04-13
  • 2020-01-23
  • 1970-01-01
  • 2016-11-05
相关资源
最近更新 更多