<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
        主站蜘蛛池模板: 亚洲狠狠婷婷综合久久久久| 又粗又大又黑又长的免费视频| 免费人成年轻人电影| 亚洲一区二区三区国产精华液| 人与禽交免费网站视频| 亚洲另类精品xxxx人妖| 国产一卡2卡3卡4卡无卡免费视频| 亚洲人成电影青青在线播放| 国产四虎免费精品视频| 在线观看亚洲AV日韩AV| 妞干网在线免费视频| 亚洲爆乳成av人在线视菜奈实| 又黄又爽的视频免费看| 一区二区免费电影| 久久夜色精品国产亚洲| 最近免费中文字幕mv电影| 国产成人精品日本亚洲直接| 日本免费人成视频播放| 成人福利在线观看免费视频| 亚洲熟妇丰满多毛XXXX| 最近免费中文字幕大全高清大全1| 亚洲娇小性色xxxx| 免费一级特黄特色大片在线观看| 伊人久久国产免费观看视频| 亚洲一区免费观看| 午夜视频在线在免费| 人人鲁免费播放视频人人香蕉| 久久精品亚洲日本佐佐木明希| 999久久久免费精品国产| 国产精品亚洲综合| 亚洲国产精品久久久久| 日韩成人免费aa在线看| a毛片免费在线观看| 亚洲xxxx视频| 亚洲乳大丰满中文字幕| 好男人www免费高清视频在线 | 免费人成在线观看网站视频| 免费人成激情视频在线观看冫| 亚洲五月综合缴情婷婷| 亚洲一级片免费看| 免费精品国产自产拍在|