Sie können dies leicht erreichen, indem Sie react-native-easy-grid Bibliothek verwenden.
Da es sich um ein 2X2-Layout handelt, können Sie es wie folgt verwenden. Ersteinfuhr die Bibliothek
import {Grid,Row,Col} from 'react-native-easy-grid'
Code:
export default class StackOverflow extends Component {
constructor(props) {
super(props);
const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
this.state = {
dataSource: ds.cloneWithRows([
'item'
])
};
}
render() {
return (
<View style={{flex:1,padding:50}}>
<ListView
dataSource={this.state.dataSource}
renderRow={(rowData) => <Grid>
<Row style={styles.container}>
<Col style={[styles.container,{backgroundColor:'yellow'}]}><Text>{rowData}</Text></Col>
<Col style={[styles.container,{backgroundColor:'green'}]}><Text>{rowData}</Text></Col>
</Row>
<Row style={styles.container}>
<Col style={[styles.container,{backgroundColor:'skyblue'}]}><Text>{rowData}</Text></Col>
<Col style={[styles.container,{backgroundColor:'orange'}]}><Text>{rowData}</Text></Col>
</Row>
</Grid>}
/>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
alignItems:'center',
justifyContent:'center'
},
});
Das Ergebnis wäre dies:
Explaination: Ich habe ein 2X2 Layout der lauten die Reaktionen unter Verwendung von native-easy-grid-Bibliothek mit den Komponenten Grid, Row, Col. Die Schönheit ist, dass Sie keine flexDirection Attribute erwähnen müssen, es funktioniert einfach. Dann übergab ich diese Komponente an die renderRow-Prop von ListView-Element.
Ich bin gerade auf das gleiche Problem gestoßen, haben Sie jemals eine Antwort darauf gefunden? –