私はすでにいくつかのflexboxのチュートリアルを読んだことがありますが、それでもこの単純なタスクを機能させることはできません。
赤いボックスを100%幅にするにはどうすればよいですか。
コード:
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Natives
</Text>
<Text style={styles.line1}>
line1
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
スタイル:
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
borderWidth: 1,
flexDirection: 'column',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
borderWidth: 1,
},
line1: {
backgroundColor: '#FDD7E4',
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
borderWidth: 1,
},
ありがとうございました!
更新1: Nishanth Shankarによる提案、ラッパーにflex:1を追加、flexDirection: 'row'
出力:
コード:
<View style={styles.container}>
<View style={{flex:1}}>
<Text style={styles.welcome}>
Welcome to React Natives
</Text>
</View>
<View style={{flex:1}}>
<Text style={styles.line1}>
line1
</Text>
</View>
<View style={{flex:1}}>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
</View>
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
borderWidth: 1,
flexDirection: 'row',
flexWrap: 'wrap',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
borderWidth: 1,
},
line1: {
backgroundColor: '#FDD7E4',
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
borderWidth: 1,
},
アイテムのスタイルシートにalignSelf: "stretch"
を追加するだけです。
line1: {
backgroundColor: '#FDD7E4',
alignSelf: 'stretch',
textAlign: 'center',
},
あなたは 寸法 を使うべきです
まず、寸法を定義します。
import { Dimensions } from "react-native";
var width = Dimensions.get('window').width; //full width
var height = Dimensions.get('window').height; //full height
それから、以下のようにline1
スタイルを変更します。
line1: {
backgroundColor: '#FDD7E4',
width: width,
},
編集済み:
中央のテキストだけを曲げるためには、別のアプローチをとることができます - 他のビューをアンフレックスする
alignItems : 'center'
を削除しますalignSelf:'center'
を追加するTextコンポーネントをViewコンポーネントにラップし、Viewに1のフレックスを与えることができます。
フレックスは与えるでしょう:
styles.containerのflexDirection:'row'
の場合は100%の幅
styles.containerのflexDirection:'column'
の場合は100%の高さ
どうぞ:
以下のようにline1スタイルを変更してください。
line1: {
backgroundColor: '#FDD7E4',
width:'100%',
alignSelf:'center'
}
幅と高さを取得してViewのスタイルで追加するには、JavaScriptを使用します。全幅と高さを取得するには、Dimensions.get('window').width
https://facebook.github.io/react-native/docs/dimensions.html を使用します。
getSize() {
return {
width: Dimensions.get('window').width,
height: Dimensions.get('window').height
}
}
その後、
<View style={[styles.overlay, this.getSize()]}>
最初にDimensionコンポーネントを追加します。
import { AppRegistry, Text, View,Dimensions } from 'react-native';
次に、変数を定義します。
var height = Dimensions.get('window').height;
var width = Dimensions.get('window').width;
3番目にそれをあなたのスタイルシートに入れます。
textOutputView: {
flexDirection:'row',
paddingTop:20,
borderWidth:1,
borderColor:'red',
height:height*0.25,
backgroundColor:'darkgrey',
justifyContent:'flex-end'
}
この例では、実際にレスポンシブビューを作成し、スクリーンビューの0.25だけを表示したかったので、スクリーンの100%にこれを乗算しない場合は、0.25で乗算しました。
textOutputView: {
flexDirection:'row',
paddingTop:20,
borderWidth:1,
borderColor:'red',
height:height,
backgroundColor:'darkgrey',
justifyContent:'flex-end'
}
注目に値する:フレックスコンセプトについて十分に理解するようにしてください。
<View style={{
flex: 2,
justifyContent: 'center',
alignItems: 'center'
}}>
<View style ={{
flex: 1,
alignItems: 'center,
height: 50,
borderWidth: 1,
borderColor: '#000'
}}>
<Text>Welcome to React Nativ</Text>
</View>
<View style={{
flex: 1,
alignItems: 'center,
borderWidth: 1,
borderColor: 'red ',
height: 50
}}
>
<Text> line 1 </Text>
</View>
<View style={{
flex: 1,
alignItems: 'center,
height: 50,
borderWidth: 1,
borderColor: '#000'
}}>
<Text>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
</View>
</View>
以下のように、コンテナスタイルのalignItems: 'center'
を削除し、textAlign: "center"
スタイルにline1
を追加するだけです。
それはうまくいくでしょう
container: {
flex: 1,
justifyContent: 'center',
backgroundColor: '#F5FCFF',
borderWidth: 1,
}
line1: {
backgroundColor: '#FDD7E4',
textAlign:'center'
},
スタイル= {{width: "100%"}}この構文を試してください。 リンクの説明をここに入力