我有一个使用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
值,但这对于初始启动没有帮助。
答案 0 :(得分:1)
android主题中的状态栏颜色为colorPrimaryDark而不是colorPrimary! ^ _ ^
只需进入本地andorid代码开放主题
您将拥有colorPrimaryDark,将其更改为状态栏所需的颜色代码!