美文网首页
React Native Listview 类似流水布局

React Native Listview 类似流水布局

作者: 猴哥rn | 来源:发表于2016-06-26 11:30 被阅读0次

    原来写的代码太乱,自己精简了一下,有需要的可以参考下,互相学习

    • 下面是效果
    1.gif

    -代码如下

    'use strict';
    /**

    • by 猴哥
      **/
      var React = require('react');
      var ReactNative = require('react-native');
      var {
      StyleSheet,
      View,
      Text,
      Image,
      AsyncStorage,
      PixelRatio,
      ListView,
      Platform,
      } = ReactNative;
      var Util = require('../util/utils');
      var {DEV} = Util;
      var TEMPData = [
      {name:'1',color:'red'},
      {name:'2',color:'green'},
      {name:'3',color:'red'},
      {name:'4',color:'green'},
      {name:'5',color:'red'},
      {name:'6',color:'green'},
      {name:'6',color:'red'},
      {name:'7',color:'green'},
      {name:'8',color:'red'},
      {name:'9',color:'green'},
      {name:'1',color:'red'},
      {name:'2',color:'green'},
      {name:'3',color:'red'},
      {name:'4',color:'green'},
      {name:'5',color:'red'},
      {name:'two',color:'green'},
      {name:'6',color:'red'},
      {name:'7',color:'green'},
      {name:'8',color:'red'},
      {name:'9',color:'green'},
      ];
      let Home = React.createClass({
      statics: {
      title: '',
      description: '',
      id: 'Home',
      },
      getInitialState(){
      return{
      dataSource : new ListView.DataSource({
      rowHasChanged : (row1, row2) => row1 !== row2
      }),
      }
      },
      componentDidMount() {
      this.fetchData();
      },
      fetchData(){
      this.setState({
      dataSource: this.state.dataSource.cloneWithRows(TEMPData),
      });
      },
      _renderRow(dataSource){
      return(
      <View>
      <View style={styles.cell}>
      <View style={[styles.img,{backgroundColor:dataSource.color,}]}/>
      <Text style={{color:'#120d0d',fontSize:13,marginTop:10}}>
      {dataSource.name}
      </Text>
      </View>
      </View>
      );
      },
      render() {
      return(
      <View style={styles.container}>
      <ListView
      contentContainerStyle={{
      flexWrap:'wrap',
      flexDirection:'row'}}
      pageSize={50}
      dataSource={this.state.dataSource}
      renderRow={this._renderRow}
      showsVerticalScrollIndicator={false}
      >
      </ListView>
      </View>
      )
      }
      });
      let styles = StyleSheet.create({
      container:{
      flex:1,
      backgroundColor:'white',
      },
      cell:{
      justifyContent: 'center',
      width:Util.size.width/3,
      height:100,
      alignItems: 'center',
      borderWidth: 1/ PixelRatio.get(),
      borderColor: '#CCC',
      },
      img:{
      alignSelf:'center',
      width:30,
      height:30,marginTop:10
      },
      });
      module.exports = Home;
    • Util文件代码如下

    'use strict';

    /**
    * 帮助工具类
    *
    */
    

    var React = require('react');
    var ReactNative = require('react-native');
    var {
    Alert,
    Platform,
    Dimensions,
    PixelRatio,
    NativeModules,
    } = ReactNative;
    var Store = require('react-native-simple-store');
    var Icon = require('react-native-vector-icons/Ionicons');
    var Util ={
    DEV:true,
    //单位像素比
    pixel: 1 / PixelRatio.get(),
    //屏幕尺寸
    size: {
    width: Dimensions.get('window').width,
    height: Dimensions.get('window').height
    },
    };
    module.exports = Util;

    相关文章

      网友评论

          本文标题:React Native Listview 类似流水布局

          本文链接:https://www.haomeiwen.com/subject/jyiadttx.html