反应本机两列布局以使动态元素不起作用

joh*_*doe 4 flexbox react-native

内部带有图像的多个View元素需要以两列布局显示。

我正在使用以下代码(基本上,获取窗口的Dimension(x)并设置View width = x / 2)。

父容器为flex: row

但这似乎不起作用。我连续只得到一个图像,而不是图像中显示的两个图像。我做错了什么?

const window = Dimensions.get('window');
const imageWidth = (window.width/3)+30;
const imageHeight = window.width/3;
export default class Brochures extends Component {
  render() {
    const brochuresView = brochuresData.map( Brochure );
    return (
      <ScrollView style={styles.container}>
        {brochuresView}
      </ScrollView>
    );
  }
}

const Brochure = ( data ) => {
  const {child, image} = styles;
  return (
    <View key={data.id} style={child}>
      <Image
        style={image}
        source={{uri: data.url}}
      />
    </View>
  )
}

const styles = StyleSheet.create({
  container: {
    flexDirection: 'row',
    flexWrap: 'wrap'
  },
  child: {
    width: window.width/2,
    alignItems: 'center',
    height: imageHeight+5,
    marginTop: 10
  },
  image: {
    width: imageWidth,
    height: imageHeight
  }
});
Run Code Online (Sandbox Code Playgroud)

布局错误

Nad*_*bit 5

ScrollView需要一个contentContainerStyle道具,而普通的style道具将描述样式。

从文档:

这些样式将应用于包含所有子视图的滚动视图内容容器。例:

return ( <ScrollView contentContainerStyle={styles.contentContainer}> </ScrollView> ); ... const styles = StyleSheet.create({ contentContainer: { paddingVertical: 20 } });

因此,基本上,您需要对代码进行的唯一更改是:

<ScrollView contentContainerStyle={styles.container}>
Run Code Online (Sandbox Code Playgroud)

与这个:

<ScrollView style={styles.container}>
Run Code Online (Sandbox Code Playgroud)