我正在尝试将我的布局屏幕与flexbox对齐,但组件子项之间存在不需要的空间。
import React,{Component} from 'react';
import { View,Image,StyleSheet,Dimensions } from 'react-native';
import { Card,Button,Avatar } from 'react-native-elements';
export default class WelcomePage extends Component {
render() {
const {navigate}=this.props.navigation
return (
<View style={{flexDirection:'column',flex:1,alignItems:'center',justifyContent: 'flex-start'}}>
<Avatar
width={Dimensions.get('window').width}
height={Dimensions.get('window').width*500/500}
containerStyle={{flex:80}}
imageProps={{resizeMode:'cover'}}
source={require('../assets/images/logo.png')}
onPress={() => console.log("Works!")}
activeOpacity={0.7}
/>
<View style={{flexDirection:'row',flex:20}}>
<Button large title='LOGIN' icon={{name: 'user-secret',type:'font-awesome'}} containerViewStyle={{borderRadius:5}} borderRadius={5} />
<Button large title='REGISTER' icon={{name: 'user-plus',type:'font-awesome'}} onPress={() => navigate('register')} containerViewStyle={{borderRadius:5}} borderRadius={5} />
</View>
</View>
)
}
}
在上面的输出中,您可以在开始处以及按钮和图像组件之间看到不需要的空间。这里有什么问题?
答案 0 :(得分:1)
你有
containerStyle
添加为flex: 80
,但您的avatar's height = screen width
,因此与中心对齐并显示了一些空间。因此您需要删除
height={Dimensions.get('window').width*500/500}
并将flex
添加到图片以覆盖整个广告
avatarStyle={{flex:80}}
<Avatar
width={Dimensions.get('window').width}
containerStyle={{flex:80}}
avatarStyle={{flex:80}}
imageProps={{resizeMode: 'cover'}}
source={require('../assets/images/logo.png')}
onPress={() => console.log("Works!")}
activeOpacity={0.7}
/>
答案 1 :(得分:0)
如果您希望Avatar
具有垂直填充的特定高度,则
1-从Avatar
及其同级View
移除flex。
2-在500/500
的{{1}}道具中相应更改height
,或者您可以尝试Avatar
。 原因:表达式Dimensions.get('window').height
评估为500/500
,这有效地使1
成为Avatar
和width
等于height
的正方形{1}}。
或者,如果Dimensions.get('window').width
尺寸符合预期,那么您可以参考this获取有关Avatar/Image
儿童行为的更多说明,如果您愿意的话。