私は実際の Android デバイスで React Native を使用しています。アプリのメイン コンポーネントに次の render 関数だけを使用して、非常に単純なアプリを作成する場合...
render() {
<Image
source={{uri:'http://resizing.flixster.com/DeLpPTAwX3O2LszOpeaMHjbzuAw=/53x77/dkpu1ddg7pbsk.cloudfront.net/movie/11/16/47/11164719_ori.jpg'}}
style={
{
flex: 1,
resizeMode: 'contain',
backgroundColor: 'yellow'
}
} />
}
デバイスで次の結果が得られます。
ご覧のとおり、背景全体が黄色であるため、画像要素が実際に画面全体のサイズを占めていることがわかります。しかし、それは間違ってレンダリングされているだけです。「カバー」の resizeMode は期待どおりに機能します (「ストレッチ」モードも同様です)。機能していないのは「contain」モードです (私の観点から最も重要なモードです)。画像が表示されないため、画像を ListView に配置すると、問題はさらに悪化します。
更新 1 フレデリックが指摘するように、「含む」は、イメージがコンテナーのサイズよりも大きい場合にのみ機能します。では、縦横比を維持したまま、画像をコンテナ全体のサイズにするにはどうすればよいでしょうか? パーセンテージは React のスタイルではまだサポートされておらず、画像が読み込まれた後に画像の幅と高さのプロパティを取得する方法がわかりません。Image コンポーネントに関連付けられたイベントは、その情報を提供しません。
更新 2 朗報です。現在、React Native v0.24.1 を使用していますが、実際のイメージ サイズがコンテナーよりも小さい場合でも、イメージの 'contain' モードが期待どおりに機能するようです。zvona のソリューションは優れています (ただし、onLayout は、画像がレンダリングされる画像ビューのサイズを提供しますが、読み込まれる実際の画像サイズは提供しないことに注意する必要があります)。今のところ、実際の画像サイズを調べる方法はわかりません (ネットワーク リソースから画像を取得していて、サイズがわからないとします。これは、計算する場合に非常に重要になる可能性があります)。その縦横比)。