反応ネイティブでは私が持っています:
<View style={styles.navBar}>
<Text>{'<'}</Text>
<Text style={styles.navBarTitle}>
Fitness & Nutrition Tracking
</Text>
<Image source={icon} style={styles.icon}/>
</View>
これらのスタイルで:
{
navBar: {
height: 60,
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
},
navBarTitle: {
textAlign: 'center',
},
icon: {
height: 60,
resizeMode: 'contain',
},
}
これは私が得る効果です:
これは私が望む効果です:
最初の例では、アイテム間の間隔は等しくなっています。
2番目の例では、各アイテムは異なる方法で正当化されます。最初の項目は左寄せされます。 2番目の項目は中央揃えです。 3番目、右揃え。
この質問 は似ていますが、反応ネイティブはmargin: 'auto'
をサポートしていないようです。さらに、他の回答は、左揃えと右揃えのみを考慮する場合にのみ機能しますが、自動マージンなしで中央揃えに実際に対処する人はいません。
反応ネイティブのナビゲーションバーを作成しようとしています。 Vanilla iosバージョンは次のようになります。
同様のことを行うにはどうすればよいですか?私は主にセンタリングに関心があります。
1つの方法は、3つの異なる領域にネストされたビュー(フレックスコンテナ)を使用し、flex:1を左右の領域に設定することです。
<View style={styles.navBar}>
<View style={styles.leftContainer}>
<Text style={[styles.text, {textAlign: 'left'}]}>
{'<'}
</Text>
</View>
<Text style={styles.text}>
Fitness & Nutrition Tracking
</Text>
<View style={styles.rightContainer}>
<View style={styles.rightIcon}/>
</View>
</View>
const styles = StyleSheet.create({
navBar: {
height: 60,
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
backgroundColor: 'blue',
},
leftContainer: {
flex: 1,
flexDirection: 'row',
justifyContent: 'flex-start',
backgroundColor: 'green'
},
rightContainer: {
flex: 1,
flexDirection: 'row',
justifyContent: 'flex-end',
alignItems: 'center',
backgroundColor: 'red',
},
rightIcon: {
height: 10,
width: 10,
resizeMode: 'contain',
backgroundColor: 'white',
}
});
marginLeft: 'auto'
を中央のコンポーネントに設定することもできます。右に押す必要があります。 React Native
ソース: https://hackernoon.com/flexbox-s-best-kept-secret-bd3d892826b6
NavigatorモジュールのNavigationBarを使用している場合は、私の質問を参照してください。 Navigator.NavigationBar(タイトル)のデフォルトスタイルの変更