博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView 九宫格布局实现
阅读量:6907 次
发布时间:2019-06-27

本文共 3646 字,大约阅读时间需要 12 分钟。

1.效果图

 

2.数据

SettingData.json

{    "data": [{        "icon":"setting",        "title":"设置"    },{        "icon":"setting",        "title":"设置"    },{        "icon":"setting",        "title":"设置"    },{        "icon":"setting",        "title":"设置"    },{        "icon":"setting",        "title":"设置"    },{        "icon":"setting",        "title":"设置"    }]}

  

3.组件代码

/** * 设置 * 九宫格布局 */import React, { Component } from 'react';import {    StyleSheet,    Text,    View,    Image,    ListView,    Dimensions,    TouchableOpacity,    ToastAndroid,    BackAndroid,    AsyncStorage,} from 'react-native';import PropTypes from 'prop-types';// 获取屏幕宽高const {width, height} = Dimensions.get('window');// 引入 自定义导航栏组件import CommunalNavBar from '../../components/CommunalNavBar';// 引入 菜单数据import SettingData from './SettingData.json';import Prompt from 'react-native-prompt';//常量设置let cols = 3;let cellWH = 100;let vMargin = (width-cellWH*cols)/(cols+1);let hMargin = 20; export default class Setting extends Component {    constructor(props){        super(props);        //1.设置数据源        let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});        //2.设置返回数据        this.state = {            dataSource:ds.cloneWithRows(SettingData.data),            isShow:false,            message:'',        };        that = this;    }    // 返回中间按钮    renderTitleItem() {        return(            
设置
); } render(){ return(
{/* 导航栏样式 */}
this.renderTitleItem()} /> {/* 九宫格 */}
{ this.setState({ isShow:false }); } } onSubmit={ (new_value) => { this.setState({ isShow:false, message:new_value }); if(!new_value){ new_value = 'http://14.127.188.40:8848'; } // 保存 IP AsyncStorage.setItem('LoginIP',new_value); ToastAndroid.show('保存成功,请重新登录!',ToastAndroid.SHORT); // 关闭程序 BackAndroid.exitApp(); } } cancelText={'取消'} submitText={'提交'} />
); } _renderRow(rowData, sectionID, rowID, highlightRow){ return(
{that._onPress(rowData.title)}}>
{rowData.title}
); } _onPress(e) { this.setState({ isShow:true }); } } const styles = StyleSheet.create({ container: { flex:1, backgroundColor:'#fff', }, navbarTitleItemStyle: { fontSize:17, color:'#fff', }, listViewStyle:{ flexDirection:'row', flexWrap:'wrap', }, iconStyle:{ width:30, height:30, marginBottom:10, }, txtStyle:{ color:'#1296DB', }, innerViewStyle:{ width:cellWH, height:cellWH, marginLeft:vMargin, marginTop:hMargin, alignItems:'center', }});

.

转载于:https://www.cnblogs.com/crazycode2/p/7482366.html

你可能感兴趣的文章
Worse Is Better 思想的发展史
查看>>
力软移动框架 ionic cordova插件jpush-phonegap-plugin 极光推送配置方法 vs2017
查看>>
Will it finally: 关于 try/catch 的一些细节
查看>>
浅谈RPC
查看>>
翻译: Spring Cloud Feign使用文档
查看>>
vue-cli2 构建速度优化
查看>>
力扣(LeetCode)310
查看>>
Vue CLI 3 更改已经使用vue create 创建的项目的css pre-processor,添加stylus
查看>>
详解利用clear清除浮动的一些问题解决
查看>>
css浮动及其危害和解决方法
查看>>
【译】Go和WebAssembly:在浏览器中运行Go程序
查看>>
解决Linux下使用pm2运行nuxt2.0,IP+端口访问不了
查看>>
snabbdom源码解析(四) patch 方法
查看>>
Spring Boot项目使用maven-assembly-plugin根据不同环境打包成tar.gz或者zip
查看>>
《Redis入门指南(第2版)》摘要
查看>>
【C++】 2_C 到 C++ 的升级
查看>>
spring-boot登陆过滤功能
查看>>
JS专题之事件循环
查看>>
vue-cli引用mui的JS文件遇到的问题
查看>>
三分钟搞定注册并且认证小程序!
查看>>