如何在 Ionic 中加载(或启动画面)时设置 Android 状态栏颜色?

Posted

技术标签:

【中文标题】如何在 Ionic 中加载(或启动画面)时设置 Android 状态栏颜色?【英文标题】:How to set the Android status bar color while loading (or in splashscreen) in Ionic? 【发布时间】:2018-09-17 00:09:36 【问题描述】:

我已经安装了cordova-splashscreen 插件并在我的config.xml 上设置了这个

<preference name="StatusBarBackgroundColor" value="#1FBBA5" />

但在 deviceReady 就绪事件触发之前,状态栏是黑色的,我可以通过编程方式对其进行更改。

有没有办法在启动时设置它,以便在显示初始屏幕时状态栏的颜色具有该十六进制值?

编辑:

按照@eatmeimadanish 的建议,我创建了一个style.xml 文件并将其链接到我的androidManifest.xml,并且在应用程序加载的第一刻,它采用了我选择的颜色(在这种情况下,只是为了测试丑陋的黄色),但是启动画面出现的那一刻,它又变回黑色。

AndroidManifest.xml

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="25" android:versionName="0.0.25" package="com.my.app" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <uses-permission android:name="android.permission.INTERNET" />
    <application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@style/MyStatusBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:name="com.google.android.gms.ads.AdActivity" android:theme="@android:style/Theme.Translucent" />
        <service android:name="com.homerours.musiccontrols.MusicControlsNotificationKiller" />
    </application>
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="27" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
</manifest>

styles.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyStatusBar" parent="@android:style/Theme.DeviceDefault.NoActionBar">
        <item name="android:statusBarColor">#ffff00</item>
    </style>
</resources>

我也尝试将它放在application标签中,但结果是一样的。

【问题讨论】:

【参考方案1】:

是的,您必须在 AndroidManifest.xml 中更改主题。

https://developer.android.com/guide/topics/ui/look-and-feel/themes.html

【讨论】:

嗨,@eatmeimadanish 我已经更新了这个问题。我听从了你的建议,但它只是成功了一半。 如果它变回黑色,那么您的状态栏插件正在激活并将其变回,或者您应该激活它并仍然使用它。 Android Manifest 基本上是它在发布期间所看到的,然后由 cordova 接管。因此,您可能需要同时利用两者。

以上是关于如何在 Ionic 中加载(或启动画面)时设置 Android 状态栏颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ionic 2 或 3 应用程序中加载实际图像之前显示占位符图像

如何在 ionic 3 应用程序启动画面上设置自定义微调器

在 ionic 3 或 4 上将启动画面作为视频?

在 Ionic4 中加载页面时播放声音

在 Ionic 应用程序中加载 Cloudfront 图像时出错 - iOS 9

启动屏幕android故障在主页中加载图像