React Native巧用flex实现组件左右两端展示

项目中我们经常会遇到左右两端同时展示文本,并且一端要优先显示,另一端跟随变化。

实现的方法有很多种,下面简述下使用flex实现该效果。

效果如图:

React Native巧用flex实现组件左右两端展示

 

通过视图结构层次,我们发现组件完全按照我们的意图显示。

视图结构:

React Native巧用flex实现组件左右两端展示

 

 话不多说,直接上代码:

左边文本右端组件

<View style={style.item_top_bg}>
         <Text style={style.item_tab}>我是标题</Text>
                    {/* 展开收起 */}
            <TouchableOpacity style={style.item_top_btn} onPress={() => {
                        let open = this.state.openflag
                        this.setState({ openflag: !open })
             }}>
                        <Text style={style.item_top_right_title}>{this.showTitle()}</Text>
                        {this.showImg()}
             </TouchableOpacity>
 </View>
  item_top_bg: {
        borderRadius: 8,
        marginHorizontal: 10,
        marginBottom: 10,
        paddingHorizontal: 15,
        paddingVertical: 20,
        flexDirection: 'row',
        alignItems: 'center',
        backgroundColor: '#FFFFFF',
    },

    item_tab: {
        flex: 2,
        fontSize: DeviceHelp.fontSize(17),
        fontWeight: DeviceHelp.fontBold,
        color: '#3480FF',
    },

    item_top_btn: {
        alignItems: 'center',
        flexDirection: 'row',
    },

左边文本右边文本

                <View style={style.item_sub_bg}>
                    {/* 左右 */}
                    <View style={style.item_title_bg}>
                        <Text style={style.item_left}>左</Text>
                        <Text style={style.item_right}>右</Text>
                    </View>
                    {/* 分割线 */}
                    <View style={style.item_line}></View>
                    {/* 左右 */}
                    <View style={style.item_title_bg}>
                        <Text style={style.item_left}>我是左边</Text>
                        <Text style={style.item_right}>我是右边</Text>
                    </View>

                </View>
   item_sub_bg: {
        borderRadius: 5,
        borderWidth: 1,
        borderColor: '#B8D2FF5C',
        backgroundColor: '#FCFDFF',
        paddingHorizontal: 15,
        paddingVertical: 17,
    },

    item_title_bg: {
        alignItems: 'center',
        flexDirection: 'row',
    },

    item_left: {
        fontSize: DeviceHelp.fontSize(14),
        color: '#666666',
        flex: 2,
    },

    item_right: {
        fontSize: DeviceHelp.fontSize(14),
        color: '#333333',
    },

    item_line: {
        marginVertical: 17,
        height: 0.5,
        backgroundColor: '#EBEBEB',
    },

 

上一篇:canvas水印


下一篇:echarts饼图渐变色与间距同时使用