FlatList
butが次の号に直面して、グリッドビューで画像をレンダリングしようとしています。
私のコードスニペット:
_...
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}
/>
} ...
_
問題は、フラットリストがitem
、右に応じてnumColumns
の幅を算出する必要があるということです。そのため、Image
すなわち高さだけを指定する必要があります。正方形の画像をレンダリングしたいので、値がDimensions.get('window').width/3
の値に割り当てます。ここで、_3
はnumColumns
の値です。
そのフラットリストの後、画像の代わりに空白のスペースをレンダリングします。
width
プロパティをImage
(コードスニペットのように)を追加し、高さ(正方形のイメージ、覚えておいてください。)次に、FlatListは正方形の画像で3つの列をレンダリングしますが、ONのように表示されます。私のスケッチ(2つのフル画像と最後の列がカットされています):
3つのフルカラムを表示する方法
この問題は、画像のwidth
とheight
の次の値を使用して解決されました。
height: (Dimensions.get('window').width - (30 + 2*this.state.columns)) / this.state.columns,
width: (Dimensions.get('window').width - (30 + 2*this.state.columns)) / this.state.columns,
_
どこ 30
メイン画面の2倍(左右)マージンと2
は画像の二重マージンです。