ログインビューに完全な背景画像を設定しようとしています。
Stackoverflowでその質問を見つけました: React Native にフルスクリーンの背景画像を追加する最良の方法は何ですか?
だから私はそこのようにそれをしました、しかしそれはうまくいきませんでした:
var login = React.createClass({
render: function() {
return (
<View style={ styles.container }>
<Image source={require('../images/login_background.png')} style={styles.backgroundImage} />
<View style={ styles.loginForm }>
<Text>TEST</Text>
</View>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
},
backgroundImage: {
flex: 1,
resizeMode: 'cover', // or 'stretch'
},
loginForm: {
},
});
何が悪いのかわかりません。任意の助けいただければ幸いです。
編集:皆さんがそれを見てみたい場合のために、これがアプリです-> rnplay.orgのフルサイズの背景画像の例 。私はそれを編集可能にする方法がわかりません:/
ありがとう:)
次の2つの方法のいずれかを試してください。
最初のは、あなたのposition: 'absolute'
ログインフォーム:
var styles = StyleSheet.create({
container: {
flex: 1,
},
backgroundImage: {
flex: 1,
resizeMode: 'cover', // or 'stretch'
},
loginForm: {
position: 'absolute',
top: 0,
bottom: 0,
left: 0,
right: 0
},
});
2番目の方法では、ImageViewをコンテナーとして使用します。
render: function() {
return (
<View style={ styles.container }>
<Image source={require('../images/login_background.png')} style={styles.backgroundImage}>
<View style={ styles.loginForm }>
<Text>TEST</Text>
</View>
</Image>
</View>
);
}
ImageBackgroundコンポーネントを使用する必要があります。 Reactネイティブドキュメント)を参照
<ImageBackground source={...} style={{width: '100%', height: '100%'}}>
<Text>Inside</Text>
</ImageBackground>
私は愚かな間違いをしていた...
Textコンポーネントの背景が白く、問題はImageと...
したがって、解決策は、@ Chernivと@kamikazeOvrldが言ったように、Imageタグ内に情報をラップすることですが、その中のコンポーネントに透明な背景も設定します。
以下は完全に機能する例です:
コード:
'use strict';
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
View,
Image,
StatusBarIOS
} = React;
StatusBarIOS.setHidden(true);
var SampleApp = React.createClass({
render: function() {
return (
<View style={ styles.container }>
<Image source={{uri: 'http://puu.sh/mJ1ZP/6f167c37e5.png'}} style={styles.backgroundImage} >
<View style={ styles.loginForm }>
<Text style={ styles.text }>Some text</Text>
</View>
</Image>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
},
backgroundImage: {
flex: 1,
resizeMode: 'cover', // or 'stretch',
justifyContent: 'center',
},
loginForm: {
backgroundColor: 'transparent',
alignItems: 'center',
},
text: {
fontSize: 30,
fontWeight: 'bold',
}
});
AppRegistry.registerComponent('SampleApp', () => SampleApp);
rnplay.org にもあります
私のような人の助けになることを願っています。一日中コードを書いていると、あなたの脳は思い通りに機能しません。
ありがとう。
ウメシュ、あなたの問題への答えはすでに明確に述べられています。
<Image />
コンポーネントには、子コンポーネントは含まれていません。必要なのは、<ImageBackground />
コンポーネントを使用することです。これにより、他のコンポーネントをそのコンポーネントに埋め込んで、子として作成できます。あなたの場合、あなたはこのようなことをするべきです
<ImageBackground> <Text>Write your text and some other stuffs here...</Text> </ImageBackground>
注:flex: 1 or width
を忘れずに追加してください。
私の答えが十分に明確であることを願っています。ありがとう。
<View style={styles.imageCancel}>
<TouchableOpacity onPress={() => { this.setModalVisible(!this.state.visible) }}>
<Text style={styles.textCancel} >Close</Text>
</TouchableOpacity>
</View>
const styles = StyleSheet.create({
imageCancel: {
height: 'auto',
width: 'auto',
justifyContent:'center',
backgroundColor: '#000000',
alignItems: 'flex-end',
},
textCancel: {
paddingTop:25,
paddingRight:25,
fontSize : 18,
color : "#ffffff",
height: 50,
},
}};