• React Native 展开收起功能实现


    项目中我们经常会遇到展开收起的功能,今天讨论下展开收起的思路,

    其实就是添加一个标记(openflag),然后我们需要展开收起的视图依赖于这个标记。

    效果如图:

    收起时显示展开

    展开时显示收起

    话不多说上代码

    export default class Test extends React.Component<IProps> {
        state = {
            openflag: false,
        };
    
        render() {
            return (
                <View style={style.item_bg}>
                    {/* 测试标题 */}
                    <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>
                    {/* 展开收起内容*/}
                    {this.showView()}
                </View>
            );
        }
    
        private showTitle() {
            let color = '展开'
            if (this.state.openflag) {
                color = '收起'
            }
            return (
                color
            );
        }
    
        private showImg() {
            if (this.state.openflag) {
                return (
                    <Image source={require('../../../image/report_up.png')} />
                );
            }
            return (
                <Image source={require('../../../image/report_down.png')} />
            );
        }
    
        private showView() {
            if (this.state.openflag) {
                return (
                    <View style={style.item_center_bg}>
                        <View style={style.item_line}></View>
                        <View style={style.item_role_bg}>
                            
                        </View>
                    </View>
                );
            }
    
        }
    }
    
    const style = StyleSheet.create({
    
        item_bg: {
            backgroundColor: 'transparent',
        },
    
        item_top_bg: {
            borderRadius: 8,
            marginHorizontal: 10,
            marginBottom: 10,
            paddingHorizontal: 15,
            paddingVertical: 20,
            flexDirection: 'row',
            alignItems: 'center',
            backgroundColor: '#FFFFFF',
              justifyContent:'space-between',
        },
    
        item_tab: {
            fontSize: DeviceHelp.fontSize(17),
            fontWeight: DeviceHelp.fontBold,
            color: '#3480FF',
        },
    
        item_top_btn: {
            alignItems: 'center',
            flexDirection: 'row',
        },
    
        item_top_right_title: {
            marginRight: 5,
            fontSize: DeviceHelp.fontSize(14),
            color: '#3480FF',
        },
    
        item_center_bg: {
            marginTop: -30,
            marginHorizontal: 10,
            paddingHorizontal: 15,
            backgroundColor: '#FFFFFF',
        },
    
        item_line: {
            marginTop: 20,
            height: 0.5,
            backgroundColor: '#EBEBEB',
        },
    
        item_role_bg: {
            marginTop: 17,
            marginBottom: 20,
            flexDirection: 'row',
            alignItems: 'center',
            height: 45,
            backgroundColor: '#F7FAFF',
            borderRadius: 4,
        },
    
    })
  • 相关阅读:
    PHP Laravel Install and Quickstart
    PHP Composer
    PHP学习 Cookie和Session
    PHP学习 Object Oriented 面向对象 OO
    PHP学习 例外和错误处理
    PHP学习 文件访问和写入
    PHP学习 函数 function
    PHP学习 流程控制和数组
    修改docker镜像地址为阿里云
    通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态
  • 原文地址:https://www.cnblogs.com/lijianyi/p/14850596.html
Copyright © 2020-2023  润新知