<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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實現九宮格效果的示例

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

        React Native之ListView實現九宮格效果的示例

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

        概述

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

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

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

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

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

        onEndReachedThreshold:調用onEndReached之前的臨界值,單位是像素。

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

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

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

        pageSize:渲染的網格數,類似于安卓GridView中的numColumns.

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

        要用ListView實現九宮格的效果:

        1,配置pageSize確認網格數量

        <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,設置每一個網格的寬度樣式

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

        3,設置contentContainerStyle相應屬性

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

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

        注: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數據 
        var shareData = require('./shareData.json'); 
         
        // 一些常亮設置 
        const cols = 3; 
        const cellWH = 100; 
        const vMargin = (screenW - cellWH * cols) / (cols + 1); 
        const hMargin = 25; 
         
        // ES5 
        var ListViewDemo = React.createClass({ 
         // 初始化狀態值(可以變化) 
         getInitialState(){ 
         // 創建數據源 
         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', 
         // 側軸方向 
         alignItems:'center', // 必須設置,否則換行不起作用 
         }, 
         
         innerViewStyle:{ 
         width:cellWH, 
         height:cellWH, 
         marginLeft:vMargin, 
         marginTop:hMargin, 
         // 文字內容居中對齊 
         alignItems:'center' 
         }, 
         
         iconStyle:{ 
         width:80, 
         height:80, 
         }, 
         
        }); 
         
        AppRegistry.registerComponent('ListViewDemo', () => ListViewDemo); 
        

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

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

        文檔

        React Native之ListView實現九宮格效果的示例

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费人成网站在线播放| 影音先锋在线免费观看| 亚洲熟妇av一区二区三区| 人人爽人人爽人人片av免费| 免费人成网站在线高清| 男女作爱免费网站| 中文字幕亚洲一区二区三区| 三级网站在线免费观看| 久久精品国产精品亚洲蜜月| 人人玩人人添人人澡免费| 亚洲国产精品久久久久网站| 5g影院5g天天爽永久免费影院 | 88av免费观看| 亚洲av日韩av无码av| 好男人看视频免费2019中文| 国产区图片区小说区亚洲区| 一区二区三区亚洲视频| 亚洲精品黄色视频在线观看免费资源| 亚洲色爱图小说专区| 59pao成国产成视频永久免费| 亚洲制服丝袜第一页| 日本不卡在线观看免费v| 一级毛片免费不卡| 无码专区—VA亚洲V天堂| 曰批视频免费30分钟成人| 国产成人不卡亚洲精品91| 国产亚洲精品美女久久久| xxxxx免费视频| 怡红院亚洲红怡院在线观看| 亚洲无人区午夜福利码高清完整版| 久久青草免费91线频观看站街| 亚洲天堂一区二区三区| 亚洲成av人在片观看| 亚洲啪啪免费视频| 激情吃奶吻胸免费视频xxxx| 国产av无码专区亚洲av桃花庵| 欧洲一级毛片免费| 一级毛片免费在线播放| 亚洲首页国产精品丝袜| 亚洲无av在线中文字幕| 无码日韩人妻av一区免费|