在反应原生如何更改Android上的根视图背景颜色?

问题描述:

我已经在线阅读了几篇教程,但大部分关于iOS的讨论或Android的一些讨论,但使用旧版本的反应,现在一切都变了。在反应原生如何更改Android上的根视图背景颜色?

如果我打开MainActivity.java只有一种方法

@Override 
protected String getMainComponentName() { 
    return "myapp"; 
} 

,这意味着我无法访问rootview并改变其背景颜色,因为它似乎连onCreate方法是不提供给任何人现在。

我也试着打开RES /风格并加入我的台词有,但我不断收到错误

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

我试过,但没有什么变化,仍出现相同的灰色背景。 希望我可以在做反应时做到这一点,但在那里添加背景不仅会增加不必要的透支,当加载时有一个背景有滞后,然后改变到另一个背景,非常难看。

+0

您是否找到解决方案? –

+0

@MaximMcNair不幸的是我没有找到任何解决方案。 – user3564573

+0

@MaximMcNair看到我的回答在 – antoine129

您需要实现React样式来更改背景颜色。

+1

以下我知道关于反应造型,我说现在不是我想要的解决方案,因为它绘制两个不同的背景,如果有动画或任何带来滞后的东西,根视图背景将会首先显示一秒钟后,我设置反应的背景。这是一个非常难看的经历 – user3564573

android/app/src/main/res/values/

  • 创建(或编辑)colors.xml添加你的背景颜色,例如:
<resources> 
    <color name="background">#AB47BC</color> 
</resources> 
  • styles.xml,添加一个名为android:windowBackground一个主题定制项目,引用所选颜色名称,例如:
<resources> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowBackground">@color/background</item> 
    </style> 
</resources> 
+1

谢谢@ antoine129,这对我来说非常合适。 – Jordan

我创建了一个库,它允许您从JavaScript级别执行此操作,并且还允许您执行动态更改。

https://github.com/johniak/react-native-root-view-background

import { setRootViewBackgroundColor } from 'react-native-root-view-background'; 

export default class Main extends Component { 
    componentDidMount(){ 
     setRootViewBackgroundColor('#ccc'); 
    } 
} 

这种解决方案的缺点是被装载JS后颜色设置。