React Native:如何使 ImageBackground 中的 View 具有 100% 宽度但具有水平填充?

React Native: how to make View inside ImageBackground have 100% width but with horizontal padding?

我的 React Native 应用程序中有以下屏幕:

蓝色黑白背景是ImageBackground,中间绿条是View。代码是:

<ImageBackground
  source={require('@images/login-background.jpg')}
  style={{
    flex: 1,
    width: '100%',
    resizeMode: 'cover',
    justifyContent: 'center',
  }}
>
  <View style={{
    width: '100%',
    backgroundColor: 'green',
    borderRadius: 15,
    padding: 15
  }}/>
  </ImageBackground>

我希望在绿色 View 的左右边缘有 15px 的填充。如果 ImageBackgroundView,我会向其添加 15px 的填充,但是当它是 ImageBackground 时,结果是:

相反,如果我将 margin: 15px 添加到绿色 View,我得到:

我应该如何处理它,使其看起来像这样?

在React-Native

中使用Dimensions可以达到上述要求
import React from "react";
import { ImageBackground, View, Dimensions } from "react-native";

const screenWidth = Dimensions.get('window').width;

export default App = () => (
    <ImageBackground
        source={{ uri: "https://reactjs.org/logo-og.png" }}
        style={{
            flex: 1,
            width: '100%',
            resizeMode: 'cover',
            justifyContent: 'center',
            alignItems: 'center'
        }}>
        <View style={{
            width: screenWidth - 30,
            backgroundColor: 'green',
            borderRadius: 15,
            padding: 15
        }} />
    </ImageBackground>
);

希望对您有所帮助。有疑问欢迎留言。

试试这个:

    <ImageBackground
      source={image}
      style={{
        flex: 1,
        width: '100%',
        resizeMode: 'cover',
        justifyContent: 'center',
      }}
    >
    <View style={{paddingHorizontal: 15}}>
      <View style={{
       width: '100%',
       backgroundColor: 'green',
       borderRadius: 15,
       padding: 15,
      }}/>
    </View>
    </ImageBackground>