Прямо из React Native docs, для того, чтобы дочерние элементы представления прокрутки располагались по горизонтали в ряду, а не по вертикали в столбце, единственная опора, которую вам нужно использовать, это horizontal
.
<ScrollView horizontal>
<Child/>
</ScrollView>
Я создал закуску, чтобы показать вам, @ abranhe / stackoverflow-56721203 :

, чтобы она соответствовала ширине экрана, поиграйте сваш компонент и:
import { Dimensions } from 'react-native';
Dimensions.get('width').width
Исходный код демо:
import React, { Component } from 'react';
import { Text, View, StyleSheet, Image, ScrollView } from 'react-native';
import data from './data';
export default class App extends Component {
renderCity(city) {
return (
<View style={styles.cardContainer}>
<View style={styles.card}>
<Image source={{ uri: city.img }} style={styles.image} />
<Text style={styles.title}>{city.title}</Text>
</View>
</View>
);
}
render() {
return (
<View style={styles.container}>
<ScrollView horizontal>
{data.map(city => {
return this.renderCity(city);
})}
</ScrollView>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#ecf0f1',
marginTop: 30,
},
title: {
margin: 24,
fontSize: 18,
fontWeight: 'bold',
textAlign: 'center',
},
image: {
width: 200,
height: 200,
borderRadius: 10,
marginTop: 10,
},
cardContainer: {
justifyContent: 'center',
},
card: {
backgroundColor: 'white',
justifyContent: 'center',
alignItems: 'center',
margin: 20,
borderRadius: 10,
width: 220,
},
});
Имейте в виду
Некоторые пользовательский интерфейскомпоненты из native-base имеют абсолютные значения, вы можете изменить переменные темы, чтобы они соответствовали вашим потребностям.
Если вы не хотите показывать индикатор прокрутки, вы можете установить false
ScrollView's showsHorizontalScrollIndicator
prop.