使用React Native阻止Android应用启动时出现灰色状态栏

时间:2018-11-08 18:09:50

标签: android react-native

我有一个使用React Native的Android应用。该应用程序始终以灰色状态栏启动,但我找不到如何防止这种情况的方法。

在我的MainActivity.java中,我有:

protected void onCreate(Bundle savedInstance) {
    this.setStatusBarToTranslucent();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
         this.setStatusBarColor();
    }

    super.onCreate(savedInstance);
    ....
}

public void setStatusBarToTranslucent() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        View decorView = this.getWindow().getDecorView();
        decorView.setOnApplyWindowInsetsListener((v, insets) -> {
                WindowInsets defaultInsets = v.onApplyWindowInsets(insets);
                return defaultInsets.replaceSystemWindowInsets(
                        defaultInsets.getSystemWindowInsetLeft(),
                        0,
                        defaultInsets.getSystemWindowInsetRight(),
                        defaultInsets.getSystemWindowInsetBottom());
            });

            ViewCompat.requestApplyInsets(decorView);
        } else {
            this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }
    }

    @TargetApi(21)
    public void setStatusBarColor() {
        this.getWindow().setStatusBarColor(Color.parseColor("#33000000"));
    }

此代码成功设置了状态栏的颜色和透明度,但是它在首次启动后就成功设置了,您可以在短时间内清楚地看到状态栏为灰色。

我的应用程序主题是:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@color/my_green</item>
    <item name="android:spinnerStyle">@style/CustomSpinner</item>
</style>

我的目标是:

compileSdkVersion 28
minSdkVersion 19
targetSdkVersion 27

我尝试设置主题的colorPrimary值,但这对于初始启动没有帮助。

1 个答案:

答案 0 :(得分:1)

android主题中的状态栏颜色为colorPrimaryDark而不是colorPrimary! ^ _ ^

只需进入本地andorid代码开放主题

您将拥有colorPrimaryDark,将其更改为状态栏所需的颜色代码!