反応するネイティブアプリで画像を(画面に合わせて小さく)サイズ変更しようとしていますが、大きすぎるのでできません。
コードは次のとおりです。
'use strict';
var React = require('react-native');
var {
StyleSheet,
Text,
TextInput,
View,
TouchableHighlight,
ActivityIndicatorIOS,
Image,
Component
} = React;
var styles = StyleSheet.create({
description: {
marginBottom: 20,
fontSize: 18,
textAlign: 'center',
color: '#656565'
},
container: {
padding: 30,
marginTop: 65,
alignItems: 'center'
},
flowRight: {
flexDirection: 'row',
alignItems: 'center',
alignSelf: 'stretch'
},
buttonText: {
fontSize: 18,
color: 'white',
alignSelf: 'center'
},
button: {
height: 36,
flex: 1,
flexDirection: 'row',
backgroundColor: '#48BBEC',
borderColor: '#48BBEC',
borderWidth: 1,
borderRadius: 8,
marginBottom: 10,
alignSelf: 'stretch',
justifyContent: 'center'
},
searchInput: {
height: 36,
padding: 4,
marginRight: 5,
flex: 4,
fontSize: 18,
borderWidth: 1,
borderColor: '#48BBEC',
borderRadius: 8,
color: '#48BBEC'
},
image: {
width: 200,
height: 220
},
});
class SearchPage extends Component {
render() {
return (
<View style={styles.container}>
<Image source={require('image!rclogo')} style={styles.image}/>
<Text style={styles.description}>
Search for RCers!
</Text>
<Text style={styles.description}>
Search
</Text>
<View style={styles.flowRight}>
<TextInput
style={styles.searchInput}
placeholder='Search by Batch, Name, Interest...'/>
<TouchableHighlight style={styles.button}
underlayColor='#99d9f4'>
<Text style={styles.buttonText}>Go</Text>
</TouchableHighlight>
</View>
<TouchableHighlight style={styles.button}
underlayColor='#99d9f4'>
<Text style={styles.buttonText}>Location</Text>
</TouchableHighlight>
</View>
);
}
}
コンテナタグから取り出しようとしましたが、なぜ適切にレンダリングされないのか理解できないようです。
これはflexbox resizeModeで実行できますか?どうやってやるの?ドキュメントが見つかりません...
画像の自動修正ビュー
image: {
flex: 1,
width: null,
height: null,
resizeMode: 'contain'
}
あなたの答えを少し調整します(shixukai)
image: {
flex: 1,
width: 50,
height: 50,
resizeMode: 'contain' }
Nullに設定すると、画像はまったく表示されません。 50のような特定のサイズに設定します
これは私のために働いた:
image: {
flex: 1,
aspectRatio: 1.5,
resizeMode: 'contain',
}
aspectRatioは幅/高さだけです(私の画像は幅45ピクセルx高さ30ピクセル)。
いくつかの組み合わせを試した後、私はこれを次のように動作させます:
image: {
width: null,
resizeMode: 'contain',
height: 220
}
具体的にはその順序で。これが誰かに役立つことを願っています。 (私はそれが古い質問であることを知っています)
同じ問題にぶつかり、満足できるものが見つかるまで サイズ変更モード を微調整できました。代替アプローチは次のとおりです。
画像を微調整する際の品質の低下を防ぐため、さまざまなサイズを簡単に試すことができるように、ベクターグラフィックスを使用することを検討してください。 Inkscapeは無料のツールであり、この目的に適しています。
これは私のために働いた:
image: {
flex: 1,
width: 900,
height: 900,
resizeMode: 'contain'
}
幅と高さは、設定したものに制限されるため、必要以上に大きくする必要があります。
これは私のために働いた、
image: {
width: 200,
height:220,
resizeMode: 'cover'
}
resizeMode: 'contain'
を設定することもできます。ネットワークイメージのスタイルを次のように定義しました。
<Image
source={{uri:rowData.banner_path}}
style={{
width: 80,
height: 80,
marginRight: 10,
marginBottom: 12,
marginTop: 12}}
/>
フレックスを使用している場合は、親ビューのすべてのコンポーネントで使用します。それ以外の場合は、height: 200, width: 220
と冗長です。
Resizemodeを 'cover'または 'contain'で使用し、画像の高さとを設定します。
私の場合、TypeScriptを使用しているため、「width」と「height」をnullに設定できませんでした。
私が修正した方法は、それらを「100%」に設定することでした:
backgroundImage: {
flex: 1,
width: '100%',
height: '100%',
resizeMode: 'cover',
}
{ flex: 1, resizeMode: 'contain' }
は私のために働いた。 aspectRatioは必要ありませんでした
反応するネイティブのスケーラブル画像を使用できます
import Image from 'react-native-scalable-image';
<View style={{width:200,height:200,overflow:'hidden'}}>
<Image
width={200} // height will be calculated automatically
source={{uri: '<image uri>'}}
/>
</View>
これを試してください:(詳細については ここをクリック )
image: { flex: 1, height: undefined, width: undefined, resizeMode: 'contain' }