Я пытаюсь визуализировать изображения в виде сетки, используя FlatList
, но столкнулся со следующей проблемой:
Мой фрагмент кода:
...
renderItem = ({item}) => {
return (
<Image source = {{uri: item.photoUrl[0].photoUrl}} style = {{margin: 1,
height: Dimensions.get('window').width / 3,
width: Dimensions.get('window').width / 3,
resizeMode: 'cover'}}
/>
)
}
render() {
if(this.props.viewOption === 'grid') {
return <FlatList
data = {this.state.photosKeysArray}
keyExtractor={(item, index) => item.id}
numColumns = {3}
renderItem={this.renderItem}
/>
} ...
Проблема в том, что FlatList должен вычислять ширину item
самостоятельно в соответствии с numColumns
, верно? Так что в Image
я должен указать только высоту. Поскольку я хочу визуализировать квадратные изображения, я присваиваю высоте значение, равное Dimensions.get('window').width/3
, где 3
- это значение numColumns
.
После этого FlatList отображает пробелы вместо изображений.
Если я добавлю свойство width
к Image
(как в моем фрагменте кода) и определу его как высоту (квадратное изображение, помните?), Тогда FlatList отобразит 3 столбца с квадратными изображениями, но они будут отображаться как на моем эскизе ( два полных изображения и последний столбец обрезан):
Как показать три полных столбца?