react native九宫格的实现(具有可扩展性)

封装单独的组件

class Info extends Component{
    render(){
        var index=this.props.index;
        return(
            <TouchableHighlight underlayColor='#eee' onPress={()=>{}} style={styles.touchView}>
                <View style={[styles.singleView]}>
                    <View style={{height:70}}>
                        <View style={{flexDirection:'row',alignItems:'center'}}>
                        </View>
                        <Text style={{marginTop:6,fontSize:14,color:"#999999"}}>未完成</Text>
                    </View>
                </View>
            </TouchableHighlight>
        )
    }
}

实现九宫格(数量没有限制)

export default class accountApply extends Component{
    constructor(props){
        super(props)
    }

    render(){
        console.log(StatusBar.currentHeight)
        var arr=[];
        for(var i=0;i<info.length;i++){
            arr.push( <Info index={i} key={i}/>)
        }
        return(
            <View style={styles.container}>
                <ScrollView>
                    <View style={{padding:10,flexDirection:'row',flexWrap:'wrap'}}>
                        {arr}
                    </View>
                </ScrollView>
            </View>

        )
    }
}

样式如下:

const styles=StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: '#f0f2f5',
    },
    header:{
        width:Utils.ScreenWidth,
        height:Utils.headerBodyHeight,
        marginTop:Utils.statusHeight,
        alignItems:'center',
        justifyContent:'center'
    },
    headerBg:{
        width:Utils.ScreenWidth,
        height:Utils.headerHeight,
        position:'absolute',
        top: 0,
    },
    headerTitle:{
        fontSize:19,
        color:'#fff',
        backgroundColor:'transparent'
    },
    backView:{
        height:Utils.headerBodyHeight,
        position:'absolute',
        left:15,
        top:Utils.statusHeight,
        flexDirection:'row',
        alignItems:'center'
    },
    backText:{
        marginLeft:5,
        fontSize:15,
        color:'#fff',
        backgroundColor:'transparent'
    },
    submitView:{
        position:'absolute',
        right:15,
        top:Utils.statusHeight,
        justifyContent:'center',
        height:Utils.headerBodyHeight,
    },
    submitText:{
        fontSize:15,
        color:'#fff',
        backgroundColor:'transparent'
    },
    touchView:{
        width:(Utils.ScreenWidth-60)/2,
        backgroundColor:'#fff',
        margin:10,
        borderRadius:5
    },
    singleView:{
        height:100,
        paddingLeft:15,
        borderRadius:5,
        justifyContent:'center',
        overflow:'hidden'

    },
    bgImg:{
        width:74,
        height:62,
        position:'absolute',
        right:-15,
        bottom:-15
    },
    infoName:{
        fontSize:16,
        color:'#444444',
        paddingTop:0
    },
    infoIcon:{
        marginLeft:10,
        width:14,
        height:14
    }

})

效果如下:


展开阅读全文

没有更多推荐了,返回首页