2016-11-07 11 views
1

私が取り組んでいる反応するネイティブアプリで、いくつかの画像にパディングを追加しようとしています。デバイス幅に基づいてイメージのサイズが変更され、各行に4つのイメージが表示されます。 this.props.imagesにはパディングなしで表示される9つの画像があります。私はこのような1のパディングを考慮して画像をラップしようとしているReact Nativeのイメージにパディングを追加しますか?

renderRow(rowData){ 
const {uri} = rowData; 
return(
<View style={{padding: 1}}> 
    <Image style={styles.imageSize} source={{uri: uri}} /> 
</View> 
) 
} 

しかし、私は最初の3枚のつのみの画像がパディングと表示されていることをしようとします。残りの画像は表示されません。

私の全体のコードはここにある:

class ImageList extends Component { 
componentWillMount(){ 
const ds = new ListView.DataSource({ 
    rowHasChanged: (r1, r2) => r1 !== r2 
}); 
this.dataSource = ds.cloneWithRows(this.props.images); 
} 

renderRow(rowData){ 
const {uri} = rowData; 

return(
    <Image style={styles.imageSize} source={{uri: uri}} /> 
) 
} 

    render() { 
    return (
     <View> 
     <ListView 
      contentContainerStyle={styles.list} 
      dataSource={this.dataSource} 
      renderRow={this.renderRow} 
     /> 
     </View> 
    ); 
    } 
} 

var styles = StyleSheet.create({ 
    imageSize: { 

//newWidth is the width of the device divided by 4. 
//This is so that four images will display in each row. 
    width: newWidth, 
    height: newWidth, 
    padding: 2 
    }, 
    list: { 
     flexDirection: 'row', 
     flexWrap: 'wrap' 
    } 
}); 

パディングを追加し、すべての私のイメージが正常に表示することができますどのように?

ここに私のアプリに画像を表示させたい画像があります。

All the images displayed in rows like I want

しかし、ここで私はとパディング内でrenderRow関数からの復帰をラップするとき、それがどのように表示されるかです。私が欲しいものはパディングがありますが、最初の3枚だけが示されています。私はパディング付きの9枚の写真をすべて表示したい。

Not displayed correctly.

+0

デザインを追加できますか? – Jickson

+1

'alignItems: 'flex-start''をリストのスタイル項目に追加できますか? – Thomas

+0

私は問題をよりよく説明するために写真を追加しました。 – dozo

答えて

1

私はコメント欄にトーマスが提供する提案を使って、私の問題を解決することができました。

私はalignSelfを追加しましたでした画像は正しく表示されている

renderRow(rowData){ 
const {uri} = rowData; 
return(
<View style={{padding: 1, alignSelf: 'flex-start'}}> 
    <Image style={styles.imageSize} source={{uri: uri}} /> 
</View> 
) 
} 

:「フレックススタート」

はここでのコードは次のようになります。

関連する問題