我正在尝试使用flexbox将我的图标对齐到按钮视图的左侧,将文本对齐到中心。目前它们都与中心对齐,但我不确定如何在按钮的最左边缘保留我的图标,同时保持文本在视图中居中
现在我的按钮看起来像这样:
我正在使用https://github.com/APSL/react-native-button按钮和 https://github.com/oblador/react-native-vector-icons用于图标
以下是我的一些代码:
<Button style={signupStyles.facebookButton}>
<View style={signupStyles.nestedButtonView}>
<Icon
name="facebook"
size={30}
color={'white'}
/>
<Text style={signupStyles.buttonText}>Continue with Facebook</Text>
</View>
</Button>
var signupStyles = StyleSheet.create({
buttonText: {
color: 'white',
fontWeight: 'bold',
textAlign: 'center',
},
facebookButton: {
backgroundColor: styleConstants.facebookColor,
borderColor: styleConstants.facebookColor,
borderWidth: 2,
borderRadius: 22,
},
nestedButtonView: {
flexDirection: 'row',
alignItems: 'center',
},
});
答案 0 :(得分:10)
您可以将图标设置为width
并提供文字padding-right
,text-align
和flex:1
<Button style={signupStyles.facebookButton}>
<View style={signupStyles.nestedButtonView}>
<Icon
name="facebook"
size={30}
color={'white'}
/>
<Text style={signupStyles.buttonText}>Continue with Facebook</Text>
</View>
</Button>
var signupStyles = StyleSheet.create({
buttonText: {
color: 'white',
fontWeight: 'bold',
textAlign: 'center',
},
facebookButton: {
backgroundColor: styleConstants.facebookColor,
borderColor: styleConstants.facebookColor,
borderWidth: 2,
borderRadius: 22,
},
nestedButtonView: {
flexDirection: 'row',
alignItems: 'center',
},
iconLeft: {
width: '40px',
},
buttonText: {
flex: 1,
paddingRight: '40px',
textAlign: 'center',
},
});
答案 1 :(得分:1)
我让它看起来像是一个黑客攻击。我在文本右侧添加了另一个图标,使其颜色与背景颜色相同。然后我给了我的按钮文本2的灵活性。如果有人有更好的方式我想知道
<Button style={signupStyles.facebookButton}>
<View style={signupStyles.nestedButtonView}>
<Icon
name="facebook"
size={30}
color={"white"}
style={signupStyles.iconLeft}
/>
<Text style={signupStyles.buttonText}>Continue with Facebook</Text>
<Icon
name="facebook"
size={30}
color={styleConstants.facebookColor}
style={signupStyles.iconRight}
/>
</View>
</Button>
造型:
buttonText: {
color: 'white',
fontWeight: 'bold',
textAlign: 'center',
flex: 2
},
iconLeft: {
marginLeft: 10,
},
iconRight: {
marginRight: 10,
},
答案 2 :(得分:0)
试试这个:
<Button style={signupStyles.facebookButton}>
<View style={signupStyles.nestedButtonView}>
<View style={signupStyles.iconstyle}>
<Icon
name="facebook"
size={30}
color={'white'}
/>
</View>
<Text style={signupStyles.buttonText}>Continue with Facebook</Text>
</View>
</Button>
var signupStyles = StyleSheet.create({
buttonText: {
color: 'white',
fontWeight: 'bold',
textAlign: 'center',
},
iconstyle:{
// alignItems:'flex-start'
}
facebookButton: {
backgroundColor: styleConstants.facebookColor,
borderColor: styleConstants.facebookColor,
borderWidth: 2,
borderRadius: 22,
},
nestedButtonView: {
// flexDirection: 'row'
},
});