• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    React Native之ListView實現(xiàn)九宮格效果的示例

    來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:33:29
    文檔

    React Native之ListView實現(xiàn)九宮格效果的示例

    React Native之ListView實現(xiàn)九宮格效果的示例:概述 在安卓原生開發(fā)中,ListView是很常用的一個列表控件,那么React Native(RN)如何實現(xiàn)該功能呢?我們來看一下ListView的源碼 ListView是基于ScrollView擴展得來的,所以具有ScrollView的相關(guān)屬性: dataSource:數(shù)據(jù)源,類似于安卓中我
    推薦度:
    導讀React Native之ListView實現(xiàn)九宮格效果的示例:概述 在安卓原生開發(fā)中,ListView是很常用的一個列表控件,那么React Native(RN)如何實現(xiàn)該功能呢?我們來看一下ListView的源碼 ListView是基于ScrollView擴展得來的,所以具有ScrollView的相關(guān)屬性: dataSource:數(shù)據(jù)源,類似于安卓中我

    概述

    在安卓原生開發(fā)中,ListView是很常用的一個列表控件,那么React Native(RN)如何實現(xiàn)該功能呢?我們來看一下ListView的源碼

    ListView是基于ScrollView擴展得來的,所以具有ScrollView的相關(guān)屬性:

    dataSource:數(shù)據(jù)源,類似于安卓中我們傳入BaseAdapter的數(shù)據(jù)集合。

    renderRow:渲染某一行,類似于BaseAdapter中的getItem方法。

    onEndReached:簡單說就是用于分頁操作,在安卓中原生開發(fā)中,我們需要自己實現(xiàn)相應的方法。

    onEndReachedThreshold:調(diào)用onEndReached之前的臨界值,單位是像素。

    refreshControl:指定RefreshControl組件,用于為ScrollView提供下拉刷新功能。(該屬性是繼承與ScrollView)

    renderHeader:渲染頭部View,類似于安卓ListView中的addHeader.

    以上的屬性基本可以解決一些常見的列表需求,如果我們想要實現(xiàn)網(wǎng)格的效果,也可以借助該組件來實現(xiàn),有點類似于安卓中的RecyclerView控件。

    pageSize:渲染的網(wǎng)格數(shù),類似于安卓GridView中的numColumns.

    contentContainerStyle:該屬性是繼承于ScrollView,主要作用于該組件的內(nèi)容容器上。

    要用ListView實現(xiàn)九宮格的效果:

    1,配置pageSize確認網(wǎng)格數(shù)量

    <ListView 
     automaticallyAdjustContentInsets={false} 
     contentContainerStyle={styles.grid} 
     dataSource={this.state.dataSource} 
     renderRow={this.renderRow.bind(this)} 
     pageSize={3} 
     refreshControl={ 
     <RefreshControl 
     onRefresh={this.onRefresh.bind(this)} 
     refreshing={this.state.isLoading} 
     colors={['#ff0000', '#00ff00', '#0000ff']} 
     enabled={true} 
     /> 
     } 
     /> 
    

    2,設(shè)置每一個網(wǎng)格的寬度樣式

    itemLayout:{ 
     flex:1, 
     width:Util.size.width/3, 
     height:Util.size.width/3, 
     alignItems:'center', 
     justifyContent:'center', 
     borderWidth: Util.pixel, 
     borderColor: '#eaeaea' 
     }, 
    

    3,設(shè)置contentContainerStyle相應屬性

    grid: { 
     justifyContent: 'space-around', 
     flexDirection: 'row', 
     flexWrap: 'wrap' 
     }, 
    

    這里需要說明下,由于ListView的默認方向是縱向的,所以需要設(shè)置ListView的contentContainerStyle屬性,添加flexDirection:‘row'。其次,ListView在同一行顯示,而且通過flexWrap:'wrap'設(shè)置自動換行。

    注:flexWrap屬性:wrap、nowrap,wrap:空間不足的情況下自動換行,nowrap:空間不足,壓縮容器,不會自動換行。

    以下是完整代碼:

     import React, { Component } from 'react'; 
    import { 
     AppRegistry, 
     StyleSheet, 
     Text, 
     View, 
     ListView, 
     Image, 
     TouchableOpacity, // 不透明觸摸 
     AlertIOS 
    } from 'react-native'; 
     
    // 獲取屏幕寬度 
    var Dimensions = require('Dimensions'); 
    const screenW = Dimensions.get('window').width; 
     
    // 導入json數(shù)據(jù) 
    var shareData = require('./shareData.json'); 
     
    // 一些常亮設(shè)置 
    const cols = 3; 
    const cellWH = 100; 
    const vMargin = (screenW - cellWH * cols) / (cols + 1); 
    const hMargin = 25; 
     
    // ES5 
    var ListViewDemo = React.createClass({ 
     // 初始化狀態(tài)值(可以變化) 
     getInitialState(){ 
     // 創(chuàng)建數(shù)據(jù)源 
     var ds = new ListView.DataSource({rowHasChanged:(r1,r2) => r1 !== r2}); 
     return{ 
     dataSource:ds.cloneWithRows(shareData.data) 
     } 
     }, 
     
     render(){ 
     return( 
     <ListView 
     dataSource={this.state.dataSource} 
     renderRow={this.renderRow} 
     contentContainerStyle={styles.listViewStyle} 
     /> 
     ); 
     }, 
     
     // 返回cell 
     renderRow(rowData){ 
     return( 
     <TouchableOpacity activeOpacity={0.8} onPress={()=>{AlertIOS.alert('點擊了')}} > 
     <View style={styles.innerViewStyle}> 
     <Image source={{uri:rowData.icon}} style={styles.iconStyle} /> 
     <Text>{rowData.title}</Text> 
     </View> 
     </TouchableOpacity> 
     ); 
     }, 
    }); 
     
    const styles = StyleSheet.create({ 
     listViewStyle:{ 
     // 主軸方向 
     flexDirection:'row', 
     // 一行顯示不下,換一行 
     flexWrap:'wrap', 
     // 側(cè)軸方向 
     alignItems:'center', // 必須設(shè)置,否則換行不起作用 
     }, 
     
     innerViewStyle:{ 
     width:cellWH, 
     height:cellWH, 
     marginLeft:vMargin, 
     marginTop:hMargin, 
     // 文字內(nèi)容居中對齊 
     alignItems:'center' 
     }, 
     
     iconStyle:{ 
     width:80, 
     height:80, 
     }, 
     
    }); 
     
    AppRegistry.registerComponent('ListViewDemo', () => ListViewDemo); 
    

    效果如圖(數(shù)據(jù)源自己加)

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    React Native之ListView實現(xiàn)九宮格效果的示例

    React Native之ListView實現(xiàn)九宮格效果的示例:概述 在安卓原生開發(fā)中,ListView是很常用的一個列表控件,那么React Native(RN)如何實現(xiàn)該功能呢?我們來看一下ListView的源碼 ListView是基于ScrollView擴展得來的,所以具有ScrollView的相關(guān)屬性: dataSource:數(shù)據(jù)源,類似于安卓中我
    推薦度:
    標簽: React native reac
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 好湿好大硬得深一点动态图91精品福利一区二区 | 免费欧美精品a在线| 亚洲精品网站在线观看不卡无广告 | 99re国产精品视频首页| 免费观看四虎精品成人| 午夜精品久视频在线观看| 久久亚洲精品成人av无码网站| 午夜精品久久久久久99热| 99久久精品免费国产大片| 精品久久久久中文字幕日本| 亚洲线精品一区二区三区 | 亚洲精品乱码久久久久久蜜桃图片| 久久精品无码专区免费东京热| 国产精品亚洲精品观看不卡| 色偷偷88888欧美精品久久久| 99久久精品毛片免费播放| 在线精品亚洲一区二区三区| 久久精品无码一区二区三区免费 | 久夜色精品国产一区二区三区| 久久亚洲国产成人精品性色| 蜜臀精品国产高清在线观看| 国产精品五月天强力打造| 免费欧美精品a在线| 国产成人精品日本亚洲直接| 精品无码日韩一区二区三区不卡| 国产精品午夜免费观看网站| 911亚洲精品国产自产| 国产精品久久久久无码av| 久久99热只有频精品8| 中文字幕精品亚洲无线码一区应用| 韩国精品欧美一区二区三区 | 亚洲AV永久纯肉无码精品动漫| 精品一区二区久久| 91久久婷婷国产综合精品青草| 精品久久人人妻人人做精品| 国产在线精品一区二区夜色| 国产一区二区精品久久岳 | 在线精品自拍无码| 亚洲日韩精品A∨片无码| 亚洲午夜精品第一区二区8050 | 97国产精品视频|