无法使用cordova-plugin-statusbar设置状态栏颜色

5

我正在尝试修改ionic应用程序中原生状态栏的颜色,但我无法使其正常工作。我已经安装了cordova-plugin-statusbar,并且安装很顺利。以下代码完美地运行:

if (StatusBar) {
    StatusBar.hide();
}

但是尝试使用其他的可用函数,比如:

if (StatusBar) {
    StatusBar.backgroundColorByHex('#RRGGBB');
}

无法工作,应用程序仅使用标准状态栏。

我还在config.xml中添加了<preference name="StatusBarOverlaysWebView" value="true" />,并在运行时通过编程设置它。

Cordova版本为5.1.1,Ionic版本为1.5.5,我正在使用Android 21进行测试。有人遇到过同样的问题或知道如何解决吗?


尝试在样式XML中更改您的父活动主题。 - Abhishek
3个回答

9

请查看我在Can't get cordova-plugin-statusbar to set color on Android的原始解决方案。

添加插件。运行以下命令:

$ cordova plugin add cordova-plugin-statusbar

编辑您的config.xml文件:

<preference name="StatusBarOverlaysWebView" value="true" />
<preference name="StatusBarBackgroundColor" value="#BE1912" />

'#BE1912' 是应用启动时的默认颜色。

您可以通过 JavaScript 代码在运行时进行更改:

if (window.cordova && StatusBar)
{
    StatusBar.backgroundColorByHexString('#BE1912');
}

4

您可以尝试移除状态栏插件,然后重新安装:

ionic plugin rm org.apache.cordova.statusbar
ionic plugin add https://github.com/apache/cordova-plugin-statusbar.git

ionic问题跟踪器中也有相同的报告。


成功了!非常感谢。不知道为什么旧版本还会以那种方式可用。 - Almyy
有没有想法如何在PhoneGap Build中使其工作?看起来它也在使用旧版本的插件。 - Benjamin Humphrey
@BenjaminHumphrey - 不确定您是否仍然遇到此问题?但是我不太确定如何在PG Build中执行此操作。您尝试安装插件的不同版本,例如:<gap:plugin name="com.phonegap.plugin.statusbar" **version="1.1.0"** />。 - Ibanez
1
我已修复问题。我的 index.html 文件中的 <script src="cordova.js"></script> 没有正确地进行引用。 - Benjamin Humphrey
这个问题再次出现,并于2017年2月23日得到解决。与答案中建议的相同修复方法再次奏效。请参见已被接受的提交:https://github.com/apache/cordova-plugin-statusbar/commit/916cccc2c00a1b7c77e2e738c83e74a22bdd55e7 - Krishna

-2

Gil的解决方案对我不起作用(我有一台三星Galaxy S7 Edge)。

onDeviceReady: function () {
    app.receivedEvent('deviceready');
    console.log(StatusBar);
    if (window.cordova && StatusBar) {
        StatusBar.backgroundColorByHexString('#BE1912');
    }
},

1
如果设备没有准备好,那么window.cordova将是未定义的。 - Gil Epshtain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接