Я изо всех сил пытался выровнять два элемента в следующих положениях: первый должен быть в левой части строки, а второй элемент должен быть в центре строки.
Следующий код ниже не полностью центрирует мой второй элемент:
<View style = {{flexDirection: 'row', justifyContent: 'space-between'}}>
<View style = {{ paddingLeft: 10 }}>
<Text style = {{ fontSize: 20, color: 'red', fontWeight: '200' }}>LEFT_ELEM</Text>
</View>
<View style = {{paddingRight: 10 }}>
<Text>
CENTER
</Text>
</View>
{/* Empty view so that space-between works? */}
<View
style = {{paddingRight: 10 }}>
</View>
</View>
Это был самый близкий мне результат к желаемому результату. Однако это не помогает. Может ли кто-нибудь знать лучший способ успешно реализовать это?





Вам необходимо добавить flex: 1 в родительский вид и дочерние представления (все дочерние элементы будут иметь flex: 1, если вы хотите, чтобы все они были одинакового размера, в противном случае определяйте ширину / гибкость для каждого дочернего представления отдельно).
Попробуй это:
<View style = {{ flex: 1, flexDirection: 'row', justifyContent: 'space-between' }}>
<View style = {{ flex: 1, paddingLeft: 10 }}>
<Text style = {{ fontSize: 20, color: 'red', fontWeight: '200' }}>LEFT_ELEM</Text>
</View>
<View style = {{ flex: 1, paddingRight: 10 }}>
<Text style = {{ textAlign:'center' }}>CENTER</Text>
</View>
<View
style = {{ flex: 1, paddingRight: 10 }}>
</View>
</View>
Добавлен style = {{ textAlign:'center' }} в текст в центре View child, чтобы дать вам представление о его центральном положении. Вы можете изменить / удалить его.
<View style = {{flex:1, flexDirection: 'row', justifyContent: 'space-around'}}>
<View style = {{width: 50, height: 50}}>
<Text style = {{ fontSize: 20, color: 'red', fontWeight: '200' }}>LEFT_ELEM</Text>
</View>
<View style = {{ width: 50, height: 50}}>
<Text>CENTER</Text>
</View>
<View style = {{ width: 50, height: 50}}/>
</View>
Когда я изучал Android, мне посоветовали не использовать слишком много «слоев» компонентов. Следуя этой философии, я решил использовать свойство 'absolute' для левого элемента, чтобы добиться более простого результата. В этой схеме «левый» предмет почти прилипает к левой стене.
<View
style = {{
height: 50,
flexDirection: 'row', // a must
alignItems: 'center', // to make items center vertically.
justifyContent: 'center' // to make the second item center horizontally.
}}
>
<MaterialIcons
style = {[styles.titleIcon, { position: 'absolute', left: 0 }]} // on left, still center vertically.
name='arrow-back'
onPress = {() => {
navigation.goBack();
}}
/>
<Text style = {styles.titleText}>{result.name}</Text> // on center automatically
</View>
@JeffPadgett Хорошо, я согласен ... Если это произойдет, возможно, потребуется дополнительный код.
Проблема в том, что если текст длинный, он может перекрывать элемент абсолютной позиции.