Rumah hujung hadapan web tutorial js ListView实现九宫格效果案例

ListView实现九宫格效果案例

Aug 06, 2017 pm 03:08 PM
ie Kes

本篇文章主要介绍了React Native之ListView实现九宫格效果的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

概述

在安卓原生开发中,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={[&#39;#ff0000&#39;, &#39;#00ff00&#39;, &#39;#0000ff&#39;]}  
      enabled={true}  
      />  
    }  
   />
Salin selepas log masuk

2,设置每一个网格的宽度样式


itemLayout:{  
  flex:1,  
  width:Util.size.width/3,  
  height:Util.size.width/3,  
  alignItems:&#39;center&#39;,  
  justifyContent:&#39;center&#39;,  
  borderWidth: Util.pixel,  
  borderColor: &#39;#eaeaea&#39;  
 },
Salin selepas log masuk

3,设置contentContainerStyle相应属性


grid: {  
  justifyContent: &#39;space-around&#39;,  
  flexDirection: &#39;row&#39;,  
  flexWrap: &#39;wrap&#39;  
 },
Salin selepas log masuk

这里需要说明下,由于ListView的默认方向是纵向的,所以需要设置ListView的contentContainerStyle属性,添加flexDirection:‘row'。其次,ListView在同一行显示,而且通过flexWrap:'wrap'设置自动换行。

注:flexWrap属性:wrap、nowrap,wrap:空间不足的情况下自动换行,nowrap:空间不足,压缩容器,不会自动换行。

以下是完整代码:


 import React, { Component } from &#39;react&#39;; 
import { 
  AppRegistry, 
  StyleSheet, 
  Text, 
  View, 
  ListView, 
  Image, 
  TouchableOpacity, // 不透明触摸 
  AlertIOS 
} from &#39;react-native&#39;; 
 
// 获取屏幕宽度 
var Dimensions = require(&#39;Dimensions&#39;); 
const screenW = Dimensions.get(&#39;window&#39;).width; 
 
// 导入json数据 
var shareData = require(&#39;./shareData.json&#39;); 
 
// 一些常亮设置 
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(&#39;点击了&#39;)}} > 
        <View style={styles.innerViewStyle}> 
          <Image source={{uri:rowData.icon}} style={styles.iconStyle} /> 
          <Text>{rowData.title}</Text> 
        </View> 
      </TouchableOpacity> 
    ); 
  }, 
}); 
 
const styles = StyleSheet.create({ 
  listViewStyle:{ 
    // 主轴方向 
    flexDirection:&#39;row&#39;, 
    // 一行显示不下,换一行 
    flexWrap:&#39;wrap&#39;, 
    // 侧轴方向 
    alignItems:&#39;center&#39;, // 必须设置,否则换行不起作用 
  }, 
 
  innerViewStyle:{ 
    width:cellWH, 
    height:cellWH, 
    marginLeft:vMargin, 
    marginTop:hMargin, 
    // 文字内容居中对齐 
    alignItems:&#39;center&#39; 
  }, 
 
  iconStyle:{ 
    width:80, 
    height:80, 
  }, 
 
}); 
 
AppRegistry.registerComponent(&#39;ListViewDemo&#39;, () => ListViewDemo);
Salin selepas log masuk

效果如图(数据源自己加)

Atas ialah kandungan terperinci ListView实现九宫格效果案例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Internet Explorer membuka Edge: Bagaimana untuk menghentikan pengalihan MS Edge Internet Explorer membuka Edge: Bagaimana untuk menghentikan pengalihan MS Edge Apr 14, 2023 pm 06:13 PM

Bukan rahsia lagi bahawa Internet Explorer telah lama tidak disukai, tetapi dengan ketibaan Windows 11, realiti muncul. Daripada kadangkala menggantikan IE pada masa hadapan, Edge kini menjadi penyemak imbas lalai dalam sistem pengendalian terkini Microsoft. Buat masa ini, anda masih boleh mendayakan Internet Explorer dalam Windows 11. Walau bagaimanapun, IE11 (versi terkini) sudah mempunyai tarikh persaraan rasmi, iaitu 15 Jun 2022, dan jam semakin berdetik. Dengan mengambil kira perkara ini, anda mungkin perasan bahawa Internet Explorer kadangkala membuka Edge, dan anda mungkin tidak menyukainya. Jadi mengapa ini berlaku? wujud

Apakah yang perlu saya lakukan jika win11 tidak boleh menggunakan pelayar ie11? (win11 tidak boleh menggunakan pelayar IE) Apakah yang perlu saya lakukan jika win11 tidak boleh menggunakan pelayar ie11? (win11 tidak boleh menggunakan pelayar IE) Feb 10, 2024 am 10:30 AM

Semakin ramai pengguna mula menaik taraf sistem win11 Memandangkan setiap pengguna mempunyai tabiat penggunaan yang berbeza, ramai pengguna masih menggunakan pelayar ie11 Jadi apa yang perlu saya lakukan jika sistem win11 tidak boleh menggunakan pelayar ie. Adakah windows11 masih menyokong ie11? Mari kita lihat penyelesaiannya. Penyelesaian kepada masalah yang win11 tidak boleh menggunakan pelayar ie11 1. Pertama, klik kanan menu mula dan pilih "Command Prompt (Administrator)" untuk membukanya. 2. Selepas dibuka, terus masukkan "Netshwinsockreset" dan tekan Enter untuk mengesahkan. 3. Selepas pengesahan, masukkan "netshadvfirewallreset&rdqu

Bagaimana untuk membatalkan lompat automatik ke Edge apabila membuka IE dalam Win10_Solution ke lompat automatik halaman pelayar IE Bagaimana untuk membatalkan lompat automatik ke Edge apabila membuka IE dalam Win10_Solution ke lompat automatik halaman pelayar IE Mar 20, 2024 pm 09:21 PM

Baru-baru ini, ramai pengguna win10 mendapati bahawa pelayar IE mereka sentiasa melompat ke pelayar tepi secara automatik apabila menggunakan pelayar komputer Jadi bagaimana untuk mematikan lompat ke tepi automatik apabila membuka IE dalam win10? Biarkan tapak ini dengan teliti memperkenalkan kepada pengguna cara melompat ke tepi dan menutup secara automatik apabila membuka IE dalam win10. 1. Kami log masuk ke pelayar tepi, klik... di penjuru kanan sebelah atas, dan cari pilihan tetapan lungsur turun. 2. Selepas kami memasukkan tetapan, klik Penyemak Imbas Lalai di lajur kiri. 3. Akhir sekali, dalam keserasian, kami menandakan kotak untuk tidak membenarkan tapak web dimuat semula dalam mod IE dan mulakan semula pelayar IE.

Bagaimana untuk menyelesaikan masalah bahawa pintasan IE tidak boleh dipadamkan Bagaimana untuk menyelesaikan masalah bahawa pintasan IE tidak boleh dipadamkan Jan 29, 2024 pm 04:48 PM

Penyelesaian kepada pintasan IE yang tidak boleh dipadamkan: 1. Isu kebenaran 2. Kerosakan pintasan 4. Isu pendaftaran; alat; 9. Semak laluan pintasan sasaran; 10. Pertimbangkan faktor lain; Pengenalan terperinci: ​1. Isu kebenaran, klik kanan pada pintasan, pilih "Properties", dalam tab "Security", pastikan anda mempunyai kebenaran yang mencukupi untuk memadamkan pintasan, anda boleh cuba jalankan sebagai pentadbir, dsb .

Penghujung era: Internet Explorer 11 telah bersara, inilah perkara yang perlu anda ketahui Penghujung era: Internet Explorer 11 telah bersara, inilah perkara yang perlu anda ketahui Apr 20, 2023 pm 06:52 PM

15 Jun 2022 ialah hari apabila Microsoft menamatkan sokongan untuk Internet Explorer 11 (IE11) dan menutup bab penyemak imbas warisannya. Syarikat itu telah mengingatkan pengguna tentang tarikh akhir hayat ini untuk beberapa waktu dan menyeru mereka untuk merancang perpindahan ke Microsoft Edge. Microsoft menggabungkan IE11 dengan Windows 8.1 sebagai pelayar web lalai moden untuk Windows. Walaupun ia tidak pernah mencapai ketinggian (semasa) Chrome, ia merupakan penyemak imbas desktop kedua paling banyak digunakan pada tahun 2014, di belakang IE8. Sudah tentu, dengan 20

Bagaimana untuk mendayakan fungsi pecutan IE Bagaimana untuk mendayakan fungsi pecutan IE Jan 30, 2024 am 08:48 AM

Bagaimana untuk mendayakan fungsi pecutan IE? IE terlalu lambat untuk membuka halaman web, kami boleh mendayakan mod pecutan perkakasan di dalamnya. Ramai rakan melaporkan bahawa apabila menggunakan pelayar IE, kelajuan membuka halaman web adalah sangat perlahan, yang juga mempunyai kesan tertentu pada penyemakan imbas web kami. Saya hanya ingin bertanya kepada editor jika terdapat sebarang penyelesaian Dalam kes ini, anda boleh menghidupkan mod pecutan perkakasan pelayar IE. lihat di bawah! Untuk mendayakan fungsi pecutan dalam IE, buka pelayar selamat IE, klik ikon "Tetapan" berbentuk gear di penjuru kanan sebelah atas, dan pilih "Pilihan Internet" untuk masuk, seperti yang ditunjukkan dalam rajah. 2. Klik "Lanjutan" dalam navigasi tab di kepala tetingkap Internet Options, seperti yang ditunjukkan dalam rajah. 3.

Bagaimana untuk menyahpasang pelayar ie9 dari win7 Bagaimana untuk menyahpasang pelayar ie9 dari win7 Jul 10, 2023 am 11:41 AM

Bagaimana untuk menyahpasang ie9 dari win7? Komputer boleh mengendalikan sesuatu di tempat kerja dan juga boleh digunakan untuk menonton rancangan TV. Sama seperti menonton drama, kami biasanya menggunakan pelayar untuk menontonnya Kerana semakin banyak pelayar dan fungsinya adalah sempurna, semakin sedikit orang menggunakan pelayar ie9 sekarang Jadi bagaimana untuk menyahpasang pelayar di win7 untuk menyahpasang pelayar IE9 daripada sistem. Bagaimana untuk menyahpasang pelayar ie9 dari win7. 1. Pertama, klik dua kali untuk membuka MyPC dan pilih untuk menyahpasang atau menggantikan program 2. Kemudian cari "ViewInstallUpdate" dan klik padanya. Anda boleh menemui "windows internet explorer9" di dalam, kemudian klik kanan untuk memadam. Di atas ialah editor dengan wi

Adakah win11 disertakan dengan pelayar IE yang telah diprapasang? Adakah win11 disertakan dengan pelayar IE yang telah diprapasang? Dec 27, 2023 pm 01:41 PM

Ramai pengguna sudah biasa menggunakan pelayar Internet Explorer Windows, tetapi mendapati bahawa selepas menaik taraf sistem Win11, pelayar Internet Explorer tidak dapat ditemui dalam sistem Oleh itu, jika mereka ingin tahu sama ada Win11 datang dengan pelayar Internet Explorer, mari ikut editor untuk melihat Hanya mencubanya. Adakah win11 disertakan dengan pelayar IE Jawapan: Win11 tidak disertakan dengan pelayar IE? 1. Microsoft sebelum ini telah menyatakan bahawa sistem win11 tidak lagi akan datang dengan pelayar IE sendiri. 2. Walau bagaimanapun, kita boleh mendayakan mod iaitu melalui pelayar tepi dalam win11. 3. Mula-mula klik pada tiga titik di sudut kanan atas, seperti yang ditunjukkan dalam gambar. 4. Kemudian klik "Tetapan" dalam menu yang terbuka. 5. Kemudian cari dan masukkan "Pelayar Lalai" di bar sisi kiri 6. Di dalamnya, mod IE akan dibenarkan

See all articles