Android:API 级别低于 21 的状态栏颜色更改

Posted

技术标签:

【中文标题】Android:API 级别低于 21 的状态栏颜色更改【英文标题】:Android : status bar color change for API level below 21 【发布时间】:2016-03-09 04:32:08 【问题描述】:

我正在尝试更改 API 级别低于 21 的状态栏颜色。通过更改主题样式中的主颜色,我们可以更改 API 级别 21 的状态栏颜色。

我正在寻找如何更改较低版本的状态栏颜色

谁能帮帮我?

【问题讨论】:

【参考方案1】:

Lollipop 可以更改状态栏的颜色

但实际上您可以更改 Api >= 19 的状态栏颜色

value-v19的样式里面放

<?xml version="1.0" encoding="utf-8"?>
<resources>

        <style name="AppTheme" parent="MaterialDrawerTheme.Light">
                <!-- Customize your theme here. -->
                <item name="android:windowNoTitle">true</item>
                <item name="android:windowTranslucentStatus">true</item>
                .....
        </style>
</resources>

状态栏的背景色会变成透明色,为了给它着色,你只需在你的应用程序中添加一个背景色,这样状态栏就会采用该颜色

希望这是清晰和有用的

【讨论】:

这很好,我怎样才能改变它的颜色而不是半透明?【参考方案2】:

更改状态栏颜色功能仅从 Lollipop 开始可用。较低的操作系统版本没有此功能。您无法更改棒棒糖前设备中的状态栏颜色。

【讨论】:

我不同意这个,这个库怎么样? github.com/jgilfelt/SystemBarTint 那不完全像材料设计。有了它,我们只能创建半透明的状态栏。并且只能在 API>=19 中完成。【参考方案3】:

最新版本的AppCompat v7:23.1.0 也不支持状态栏着色。

看看Android developers blog post

来自帖子:

在旧平台上,AppCompat 尽可能模拟颜色主题。目前这仅限于为操作栏和一些小部件着色。

这意味着 AppCompat 库只会在 Lollipop 及更高版本上为状态栏着色。

【讨论】:

你会想的。 叹息。有时谷歌做出的设计选择令人费解。比如他们在那边抽什么烟?【参考方案4】:

>

在 API lvl v21 以下,您可以通过更改 colorPrimaryDark(有时 colorPrimary ) 属性在 styles.xml 文件和您正在使用的 theme 内。

现在,这对您来说可能或许多不可行,它可能看起来像是一个 hack,甚至对您来说是显而易见的。但我只是在这里发布它,因为它对我有用,而且我真的没有使用 colorPrimary 或 colorPrimaryDark,所以我没有任何问题。

【讨论】:

以上是关于Android:API 级别低于 21 的状态栏颜色更改的主要内容,如果未能解决你的问题,请参考以下文章

调用需要 API 级别 21(让 camera2 在低于 21 的设备上运行?)[重复]

API 级别低于 9 的 android:filterTouchesWhenObscured 的类似物

针对特定 API 级别的自定义 Android/Flutter 版本

如果 Android API 级别低于 26,如何将存储访问框架与 MediaMuxer 一起使用

蓝牙低能耗清单

在 21 android 以下的 api 上更改状态/通知栏颜色?