为什么我的React Native flex包装不起作用?

时间:2017-09-05 04:21:05

标签: react-native flexbox

我试图灵活地包装一些标签,但几乎没有什么工作,我已经尝试了一切,它仍然没有包装React Native可能有包装问题吗?

我的标签输出只包含在视图中,并且具有所有正确的设置。

我目前的结果 enter image description here

这是我的代码:

 <View
style={{
    width: responsiveWidth(18),
    height: responsiveHeight(3.5),
    borderRadius: 10,
    backgroundColor: "#ffe8e8",
    alignItems: "center",
    justifyContent: "center",
    marginLeft: responsiveWidth(8)
}}
>
<Text
    style={{
        color: "#000",
        fontSize: responsiveFontSize(1.5),
        fontFamily: "Iransans"
    }}
>
    8:00 AM
</Text>
</View>;

for (var i = 1; i < times.length / 4; i++) {
//i shomarandeye radif
for (var j = 1; j % 4 == 0; j++) {
    //j shomarandeye sheyaaye darune radif
}
}

const isEmptyPhotoTags = _.isEmpty(photoTags);
let renderTags = [];
if (!isEmptyPhotoTags) {
photoTags[0].forEach(function(tag, i) {
    renderTags.push(
        <View
            key={i}
            style={{
                flex: 1,
                flexDirection: "row",
                flexWrap: "wrap",
                alignItems: "flex-start",
                justifyContent: "space-between",
                alignContent: "space-between",
                paddingLeft: 15
            }}
        >
            <View style={{ height: 52, width: 146, padding: 5 }}>
                <TouchableHighlight style={styles.buttonTag}>
                    <Text style={styles.buttonTagText}>{tag}</Text>
                </TouchableHighlight>
            </View>
        </View>
    );
});
}

<View style={styles.tagSection}>
<View
    style={{
        flex: 1,
        flexDirection: "row",
        flexWrap: "wrap",
        alignItems: "flex-start",
        justifyContent: "flex-start"
    }}
>
    <Icon
        name="tag"
        size={29}
        type={"font-awesome"}
        color={"#58595B"}
        style={{ paddingLeft: 20, paddingRight: 10 }}
    />
    <Text style={styles.tagSectionHeaderText}>Tags</Text>
</View>
<View
    style={{
        flex: 1,
        flexDirection: "row",
        flexWrap: "wrap",
        alignItems: "flex-start",
        justifyContent: "space-between",
        alignContent: "space-between"
    }}
>
    {!isEmptyPhotoTags ? (
        <View
            style={{
                flex: 1,
                flexDirection: "row",
                flexWrap: "wrap",
                alignItems: "flex-start",
                alignContent: "space-between",
                justifyContent: "space-between"
            }}
        >
            {renderTags}
        </View>
    ) : (
        <Text style={styles.tagSectionNoTags}>No Tags</Text>
    )}
</View>
</View>;

tagSection: {
    flex: 1,
    flexDirection: 'column',
    backgroundColor:'#F7F8F9',
    paddingTop:10,
    flexWrap:'wrap',
    alignItems: 'flex-start',
    justifyContent: 'flex-start'
},
tagSectionHeaderText:{
    fontSize: 21,
    lineHeight: 22,
    color: '#58595b',
    fontWeight: '600',
    paddingRight:10,
},
tagSectionNoTags:{
    fontSize: 18,
    lineHeight: 22,
    color: '#58595b',
    fontWeight: '400',
    fontStyle:'italic',
    paddingLeft:10,
},
buttonTag: {
    borderTopLeftRadius: 10,
    borderTopRightRadius: 10,
    borderBottomRightRadius: 10,
    borderBottomLeftRadius: 10,
    backgroundColor: '#6575BE',
    flex:1,
    justifyContent: 'center',
    alignItems: 'center',
},
buttonTagText: {
    textAlign: 'center',
    fontSize: 20,
    lineHeight: 22,
    color: '#fff',
    fontWeight: '600',

}

更新代码:

 const isEmptyPhotoTags = _.isEmpty(photoTags);
 let renderTags = [];
 if (!isEmptyPhotoTags) {
 photoTags[0].forEach(function(tag, i) {
    renderTags.push(
        <View key={i} style={[styles.wrapTags, { paddingLeft: 15 }]}>
            <View style={{ height: 52, width: 146, padding: 5 }}>
                <TouchableHighlight style={styles.buttonTag}>
                    <Text style={styles.buttonTagText}>{tag}</Text>
                </TouchableHighlight>
            </View>
        </View>
    );
});
}

<View style={styles.tagSection}>
  <View
    style={{
        flex: 1,
        flexDirection: "row",
        flexWrap: "wrap",
        alignItems: "flex-start",
        justifyContent: "flex-start"
    }}
>
    <Icon
        name="tag"
        size={29}
        type={"font-awesome"}
        color={"#58595B"}
        style={{ paddingLeft: 20, paddingRight: 10 }}
    />
    <Text style={styles.tagSectionHeaderText}>Tags</Text>
</View>
<View style={styles.wrapTags}>
    {!isEmptyPhotoTags ? (
        <View
            style={{
                flexDirection: "row",
                flexWrap: "wrap",
                alignItems: "flex-start",
                alignContent: "space-between",
                justifyContent: "space-between",
                paddingBottom: 10
            }}
        >
            {renderTags}
        </View>
    ) : (
        <Text style={styles.tagSectionNoTags}>No Tags</Text>
    )}
</View>
</View>;

 tagSection: {
    //flex: 1,
    flexDirection: 'column',
    backgroundColor:'#F7F8F9',
    paddingTop:10,
    flexWrap:'wrap',
    alignItems: 'flex-start',
    justifyContent: 'flex-start'
},
tagSectionHeaderText:{
    fontSize: 21,
    lineHeight: 22,
    color: '#58595b',
    fontWeight: '600',
    paddingRight:10,
},
tagSectionNoTags:{
    fontSize: 18,
    lineHeight: 22,
    color: '#58595b',
    fontWeight: '400',
    fontStyle:'italic',
    paddingLeft:10,
},
wrapTags:{
    flex:1,
    flexDirection:'row',
    flexWrap:'wrap',
    alignItems: 'flex-start',
    justifyContent: 'flex-start'
},
buttonTag: {
    borderTopLeftRadius: 10,
    borderTopRightRadius: 10,
    borderBottomRightRadius: 10,
    borderBottomLeftRadius: 10,
    backgroundColor: '#6575BE',
    flex:1,
    justifyContent: 'center',
    alignItems: 'center',
},
buttonTagText: {
    textAlign: 'center',
    fontSize: 20,
    lineHeight: 22,
    color: '#fff',
    fontWeight: '600',

},

3 个答案:

答案 0 :(得分:3)

您应该删除flex: 1以解决问题。

答案 1 :(得分:1)

查看ur View组件的宽度,您将了解那里发生的事情

答案 2 :(得分:0)

我在父flex组件中定义时遇到了相同的问题,flexWrap无法正常工作:1。 现在,我对其进行了更改,并且可以使用。

<View style={{ flexDirection: 'row' }}>
    <Text style={{ flex: 1, flexWrap: 'wrap' }}></Text>
</View>
相关问题