ListView 九宫格布局实现
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(
<Text style={styles.navbarTitleItemStyle}>设置</Text>
);
} render(){
return(
<View style={styles.container}>
{/* 导航栏样式 */}
<CommunalNavBar
titleItem = {() => this.renderTitleItem()}
/> {/* 九宫格 */}
<ListView
dataSource={this.state.dataSource}
renderRow={this._renderRow}
contentContainerStyle={styles.listViewStyle}
/> <Prompt
visible={this.state.isShow}
title={'提示:'}
placeholder={'请输入IP地址!'}
onCancel ={
() => {
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={'提交'}
/>
</View>
);
} _renderRow(rowData, sectionID, rowID, highlightRow){
return(
<TouchableOpacity activeOpacity={0.5} onPress={()=>{that._onPress(rowData.title)}}>
<View style={styles.innerViewStyle}>
<Image source={{uri:rowData.icon}} style={styles.iconStyle}/>
<Text style={styles.txtStyle}>{rowData.title}</Text>
</View>
</TouchableOpacity>
);
} _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',
}
});
.
ListView 九宫格布局实现的更多相关文章
- [RN] React Native 使用 FlatList 实现九宫格布局 GridList
React Native 使用 FlatList 实现九宫格布局 先看图片演示实例: 本文以图片列表为例,实现九宫格布局! 主要有两种方法: 1)方法一: 利用FlatList的 numColumns ...
- iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- iOS- 用UICollectionViewController 来进行横竖屏九宫格布局
1.简单说说UICollectionViewController 我们在做九宫格布局时,可以使用UIScrollView,也可以使用UICollectionViewController. 当我们用UI ...
- table 实现 九宫格布局
九宫格布局 最近遇到一个题目,是实现一个九宫格布局的.实现的效果大概是下图这种这样子的: (鼠标悬浮的时候,九宫格的边框颜色是改变的.) 首先想到的是直接使用<table>进行布局,原因很 ...
- Android ListView多布局
使用listview多布局会出现一点问题: 由于多个item布局给单一的item布局是不一样的,使用起来,contentview的复用会出现问题. 避免出现问题的有这几个方法: 1.重写 getVie ...
- 2018-5-28-win10-uwp-动态修改ListView元素布局
title author date CreateTime categories win10 uwp 动态修改ListView元素布局 lindexi 2018-05-28 15:15:54 +0800 ...
- Android开发 ---基本UI组件8:九宫格布局、setOnItemClickListener()项被选中监听事件
效果图: 1.activity_main.xml 描述: 定义了一个按钮 <?xml version="1.0" encoding="utf-8"?> ...
- Android中ListView错位布局实现(无聊向)
由于某些原因,需要个错位的页面,在网上找不到好的例子,试着动手写了写. 不考虑配色的完成图如下: 首先考虑的是,listview每一行左右都有可能缩进. 先假设一行的布局就是ImageView,Tex ...
- 实现顶部轮播,下部listview经典布局的两种方式
开头: 在做android开发的时候,我们经常会遇到这样的布局,上面是一个图片轮播图,下面是一些列表的项目.很多新闻app,视频类app都采用这样的布局.起初的时候 由于没有很多参考,我自己想到了一种 ...
随机推荐
- C++ 统计输入的句子有多少英文字母
// ConsoleApplication1.cpp: 定义控制台应用程序的入口点.//#include "stdafx.h"#include <iostream>#i ...
- POJ 3135 Polygons on the Grid(枚举+凸包)
题目大意是让你用这n条边放在网格上构成凸包,并且边的两端点必须在网格上. 那么比较容易想到的就是枚举可能情况,因为这样的勾股数组成情况不多,因此可以直接枚举所有连出去的边反映在坐标轴上的所有情况,最后 ...
- NOIP赛前集训备忘录(含每日总结)(日更?。。。)
NOIP赛前集训备忘录(含每日考试总结) 标签: 有用的东西~(≧▽≦)/~啦啦啦 阅读体验:https://zybuluo.com/Junlier/note/1279194 考试每日总结(这个东西是 ...
- Scrapy 教程(八)-分布式爬虫
scrapy 本身并不是一个分布式框架,而 Scrapy-redis 库使得分布式成为可能: Scrapy-redis 并没有重构框架,而是基于redis数据库重写了框架的某些组件. 分布式框架要解决 ...
- vue.js学习记录
vue.js学习记录 文章已同步我的github笔记https://github.com/ymblog/blog,欢迎大家加star~~ vue实例 生命周期 beforeCreate:不能访问thi ...
- 剑指offer-序列化和反序列化二叉树-树-python
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存.序列化可以基于先 ...
- django部署到linux上不显示.svg图标处理方法
在setting文件的最开始添加如下内容: import mimetypes mimetypes.add_type("image/svg+xml", ".svg" ...
- 小程序之如和使用view内部组件来进行页面的排版功能
这篇文章主要介绍了关于小程序之如和使用view内部组件来进行页面的排版功能,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 涉及知识点: 1.垂直排列,水平排列 2.居中对齐 示例: 1 ...
- python数据结构:pandas(3)
一.pandas数据操作: 1.处理缺失数据 (1)判断是否存在缺失值 ser_obj.isnull(),df_obj.isnull() (2)dropna:丢弃缺失数据 (3)fillna:填充缺失 ...
- HTML回顾之表单和列表
FORM HTML 表单 表单是一个包含表单元素的区域. 表单元素是允许用户在表单中输入内容,比如:文本域(textarea).下拉列表.单选框(radio-buttons).复选框(checkbo ...