在 21 android 以下的 api 上更改状态/通知栏颜色?
Posted
技术标签:
【中文标题】在 21 android 以下的 api 上更改状态/通知栏颜色?【英文标题】:Change status / notification bar color on api below 21 android? 【发布时间】: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 之前无法着色。 这个怎么样?? developer.android.com/training/material/… 请看StackO-Post 我明白这一点。但我见过带有彩色状态栏的应用程序。例如索尼随身听应用程序。 索尼设备上的系统应用是什么,不是吗?索尼很可能对系统本身进行了更改。不幸的是,您作为开发人员不能使用这些。 【参考方案1】:如果您指的是 AcionBar 的颜色,您可以使用以下代码以编程方式更改颜色:
getSupportActionBar().setBackgroundDrawable(new Color.Drawable(Color.rgb(120,0,47)));
更改数字以选择您自己的颜色。
【讨论】:
不,我说的不是操作栏,而是状态/通知栏颜色 好的,试试这个***.com/questions/22192291/… 我想要棒棒糖前的支持。我知道如何用棒棒糖做。【参考方案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以上是关于在 21 android 以下的 api 上更改状态/通知栏颜色?的主要内容,如果未能解决你的问题,请参考以下文章
Android 5.0(API 21)以下系统兼容(retrofitokhttp)
Android 已弃用 android.hardware.Camera,现在建议使用 android.hardware.camera2 但这在 API 21 以下的任何内容中均不可用