【问题标题】:Setting an Expo LinearGradient as background of the whole react native app将 Expo LinearGradient 设置为整个 React Native 应用程序的背景
【发布时间】:2019-02-21 21:01:20
【问题描述】:

我正在使用 react-navigation,并且我有一个嵌套在其中的 stackNavigator 的 DrawerNavigator,如何使用 Expo LinearGradient 为整个应用程序设置渐变背景,而不必在其渲染方法中使用 <LinearGradient> 包装每个屏幕组件?

PS:我尝试在 app.js 中用 <LinearGradient> 组件包装 <MyApp /> 组件,但似乎 <MyApp /> 组件用自己的背景覆盖了整个屏幕,因此看不到线性渐变.

导航代码

const HomeStack = createStackNavigator({
  Home: {
    screen: Home
  },
  Results: {
    screen: Results
  },
}, {
  navigationOptions: {
    header: null
  }
})


const MyApp = createDrawerNavigator({
  Home: {
    screen: HomeStack,
    navigationOptions: {
      title: '...'
    }
  },
  Info: {
    screen: Info,
    navigationOptions: {
      title: '.....'
    }
  },
}, {
  drawerPosition: '....',
  contentOptions: {
    itemStyle: {
      alignSelf: '....',
    },
    labelStyle: {
      fontFamily: '....'
    }
  }
})

【问题讨论】:

    标签: react-native react-navigation expo linear-gradients


    【解决方案1】:

    这在我的 App.js 中对我有用:

    return (
      <LinearGradient colors={myGradientColor} style={{ flex: 1}}>
        <MainNavigator />
      </LinearGradient>
    );
    

    尝试将您的 Navigator 简化为几个屏幕,然后引入嵌套 Navigator,然后引入整个恐怖。

    我不得不修改 MainNavigator 中的后续屏幕以排除任何类型的 LinearGradient 背景,并且还要在 flex: 1 样式中工作。

    【讨论】:

    • 并且可以为闪屏使用 LinearGradient 吗?
    • 您应该能够控制启动画面的显示内容。查看 Expo 的 SplashScreen 组件的文档。在 !this.state.isAppReady 时,您可以返回 &lt;LinearGradient&gt; 而不是 &lt;View&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多