如何更改初始屏幕的StatusBar颜色?

时间:2019-03-17 17:31:57

标签: android react-native splash-screen

我正在使用React Native来构建我的android应用程序,并且我遵循了tutorial来设置我的启动画面。这是result。我的主要问题是状态栏的颜色变为黑色,我无法通过将<item name="colorPrimaryDark">@color/colorPrimaryDark</item>文件中的styles.xml<color name="blue">#009CD7</color><color name="colorPrimaryDark">#009CD7</color>中的{ {1}}文件。

奖金问题:如何在不对边距进行硬编码的情况下使图像居中,而不管应用程序运行在哪个设备上,使它保持居中?

4 个答案:

答案 0 :(得分:2)

在当前的启动主题中再添加colorPrimaryDark个项目,或创建一个新项目。

<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:statusBarColor">@android:color/white</item>
    <item name="android:windowLightStatusBar">true</item>
    <item name="android:background">@drawable/background_splash</item>
    <item name="colorPrimaryDark">@android:color/white</item>
</style>

然后在显示SplashScreen时将其用作第二个参数。

public class MainActivity extends ReactActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        SplashScreen.show(this, R.style.SplashTheme);
        super.onCreate(savedInstanceState);
    }
}

答案 1 :(得分:1)

如果要更改TaskBar的颜色,只需在输出函数中添加活动和所需的颜色即可。

fun setTaskBarColored(colored: Int,activity: Activity) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            activity.window!!.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
            activity.window!!.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            activity.window!!.statusBarColor = ContextCompat.getColor(activity, colored)
        }
    }

导航栏也是如此

    fun setNavigationBarColored(colored: Int, activity: Activity){
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            activity.window!!.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
            activity.window!!.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
            activity.window!!.navigationBarColor =  ContextCompat.getColor(activity, colored)
        }
    }

答案 2 :(得分:0)

您可以简单地将此JSX代码添加到应用程序的根目录,而无需编辑任何本机文件。

<StatusBar backgroundColor="blue" barStyle="light-content" />

此外,为了使图像居中,请用视图将其包裹起来并添加样式“ {justifyContent:“ center”,alignItems:“ center”}”。如果那不起作用,则将这种样式直接添加到图像组件“ alignSelf:'居中”

答案 3 :(得分:0)

为此在android / app / src / main / res / values / styles.xml中创建样式定义:

<?xml version="1.0" encoding="utf-8"?>
    <resources>
         <style name="SplashTheme" parent="SplashScreen_SplashTheme">
             <item name="colorPrimaryDark">your_color</item>
         </style>
   </resources>

现在您可以更改显示方法以包括您的自定义样式:

SplashScreen.show(this, R.style.SplashTheme);

您现在不喜欢:)