RN组件之ScrollView
一.ScrollView
该组件封装了Android平台的ScrollView(滚动组件),并且提供触摸事件"responder"系统功能.使用ScrollView的时候
确保有一个固定的高度,因为这个控件其实就是把很多不固定高度的子控件装入到固定的父容器中(通过滑动交互).
如果我们要给ScrollView进行设置高度的话,要么我们直接ScrollView进行设置高度(不建议).另一种方法就是给
ScrollView的父控件设置相关高度.使用第二种方法ScrollView中是不能加{fLex:1},不然不会有效果的.
1.属性方法(通用和Android的)
(1)View相关属性样式全部继承(例如:宽和高,背景颜色,边距等相关属性样式)
(2)contentContainerStyle:样式风格属性(传入StyleSheet创建的Style文件).该样式会作用于被ScrollView
包裹的所有子视图
(3)horizontal(bool):表示ScrollView是横向滑动还是纵向滑动.默认false表示纵向滑动
(4)keyboardDismissMode(enum):('none','interactive','on-drag')
none(默认值):拖拽时不隐藏软键盘
on-drag:当拖拽开始的时候隐藏键盘
interactive:软键盘伴随拖拽操作同步地消失,并且如果往上滑动会恢复键盘.安卓设备不支持这个选项,
会表现的和none一样.
(5)keyboardShouldPersiitTaps(bool):当此属性为false的时候,在软键盘激活之后,点击焦点文本框以外的
地方,键盘就会隐藏.如果为true,滚动视图不会响应点击操作,并且键盘不会自动消失.默认值为false.
(6)onScroll(function):在滚动的过程中,每帧最多调用一次回调函数.调用的频率可以用
scrollEventThrottle属性来控制
(7)refreshControl (element):指定RefershControl,用于为ScrollView提供下拉刷新功能.
(8)removeClippedSubviews(bool):(实验特性):当此属性为true时,屏幕之外的子视图(子视图的overflow
样式需要设为hidden)会被移除.这个可以提升大列表的滚动性能.默认值为true.
(9)showsHorizontalScollIndicator(bool):当此属性为true的时候,显示一个水平方向的滚动条
(10)showsVerticalScrollIndicator(bool):当此属性为true的时候,显示一个垂直方向的滚动条
2.style样式
(1)Flexbox...
(2)Transforms...
(3)backfaceVisibility enum('visible','hidden')
(4)borderColor string
(5)borderTopColor string
(6)borderRightColor string
(7)borderBottomColor string
(8)borderLeftColor string
(9)borderRadius number
.....
代码示例:
'user strict'
const React =require('react-native');
const {
AppRegistry,
ScrollView,
StyleSheet,
RefreshControl,
Text,
View,
}=React;
const styles=StyleSheet.create({
row:{
borderColor:'red',
borderWidth:5,
padding:5,
backgroundColor:'#3a5795',
margin:5,
},
text:{
alignSelf:'center',
color:'#fff',
},
scrollview:{
flex:1,
}
}); const Row =React.createClass({
//误导新手啊,这句没用啊...
/* _onClick:function (){
this.props.onClick(this.props.data);
},*/
render:function(){
return (
<View style={styles.row}>
<Text style={styles.text}>
{this.props.data.text}
</Text>
</View>
);
},
}); const RefreshControlDemo =React.createClass({
getInitialState(){
return {
isRefreshing:false,
loaded:0,
rowData:Array.from(new Array(20)).map(
(val,i) =>({text:"初始行"+i})
),
};
},
render(){
const rows=this.state.rowData.map((row,ii) =>{
return <Row key={ii} data={row}/>
});
return(
<ScrollView
style={styles.scrollview}
refreshControl={
<RefreshControl
refreshing={this.state.isRefreshing}
onRefresh={this._onRefresh}
colors={['#ff0000','#00ff00']}
progressBackgroundColor="#ffffff"
/>
}>
{rows}
</ScrollView>
);
}, _onRefresh(){
this.setState({isRefreshing:true});
setTimeout(() =>{
//准备下拉刷新的5条数据
const rowData =Array.from(new Array(5))
.map((val,i) =>({
text:'刷新行'+(+this.state.loaded+i)
}))
.concat(this.state.rowData);
this.setState({
loaded:this.state.loaded+5,
isRefreshing:false,
rowData:rowData,
});
},2000);
},
}); AppRegistry.registerComponent('MyProject2', () => RefreshControlDemo);
RN组件之ScrollView的更多相关文章
- 第27讲 UI组件之 ScrollView与底部动态添加数据
第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...
- RN组件备忘录
1:ActivityIndicator:圆形的loading提示符号. 2:Button:按钮 3:FlatList:高性能列表组件,支持下拉刷新. 4:Image:图片组件,能显示 网络图片.静态资 ...
- React Native组件之ScrollView 和 StatusBar和TabBarIos
React Native中的组件ScrollView类似于iOS中的UIScrollView,其基本的使用方法和熟悉如下: /** * Sample React Native App * https: ...
- React Native常用组件之ScrollView
1. 两个要点 1.1 ScrollView必须有一个确定的高度才能正常工作 它实际上所做的就是将一系列不确定高度的子组件装进一个确定高度的容器(通过滚动操作) 通常有两种做法: 第一种: 直接给该S ...
- React Native常用组件之ScrollView组件
一.前言 从iOS开发的经验来看,scrollView无疑是移动开发中很重要的一个组件,比如后面会学到的ListView就是继承自它.那么,在开发中比如:焦点图.引导页等地方都有其的影子,那接下来我们 ...
- 【Flutter学习】可滚动组件之ScrollView
一,概述 ScrollView 是一个带有滚动的视图组件. 二,组成部分 ScrollView 由三部分组成: Scrollable - 它监听各种用户手势并实现滚动的交互设计.可滚动Widget都直 ...
- RN组件之Navigator
一.Navigator 1.使用导航器可以在应用的不同场景(页面)间进行切换.导航器通过路由对象来分辨不同的场景.利用renderScene方法,导航栏可以根据 指定的路由来渲染场景. 可以通过con ...
- RN组件之Switch与Picker
一.Switch选择开关控件 1.该组件为Android/IOS通用的两种状态的开关组件 2.属性方法 (1)disabled bool:如果该值为true,用户就无法点击switch开关,默认为fa ...
- RN组件之ToolbarAndroid
一.ToolbarAndroid 1.该组件封装了Android平台中的ToolBar组件(只适用于Android平台).一个ToolBar组件可以显示一个Logo图标 以及一些导航图片(例如:菜单功 ...
随机推荐
- catalog、scheme区别
按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念,可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要用来解决命名冲突问题.从概念上说,一个数据库系统包含多个 ...
- TCP的几个状态 (SYN, FIN, ACK, PSH, RST, URG)
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 它们的含义是: SYN表示建立连 ...
- JAVA接口继承、抽象类等
1.定义接口 package test.intefaces; public interface TestIntefaceA { void testA(); void testB(); void tes ...
- PHP实现 bitmap 位图排序 求交集
2014年12月16日 17:15:09 初始化一串全为0的二进制; 现有一串无序的整数数组; 如果整数x在这个整数数组当中,就将二进制串的第x位置为1; 然后顺序读取这个二进制串,并将为1的位转换成 ...
- css3学习总结3--CSS3图像边框
border-image属性 .className{ border-image:url(/course/54d1cae088dba03f2cd1fec1/img/border.png) 20 20 2 ...
- Tomcat AccessLog 格式化
有的时候我们要使用日志分析工具对日志进行分析,需要对日志进行格式化,比如,要把accessLog格式化成这样的格式 c-ip s-ip x-InstancePort date time-taken x ...
- Eclipse 中Tomcat 启动 与直接启动Tomcat的区别
这段时间不用Java 了突然发现在用的时候出问题了. 首先现在Eclipse和Tomcat,解压后 如图1所示: 图1: 进入里面的bin文件目录后发现有 如图2所示包含了startup.bat,st ...
- php 指针遍历、预定义数组和常用函数
<?php /*//定义 $attr = array(1,2,3); $attr[] = 1; $attr = array("one"=>"hello&quo ...
- IoC容器Autofac - Autofac + Asp.net MVC + EF Code First(转载)
转载地址:http://www.cnblogs.com/JustRun1983/archive/2013/03/28/2981645.html 有修改 Autofac通过Controller默认构造 ...
- HTML5 Socket通信
HTML5 Socket通信使用起来也是相当不从的,先将部分JS代码与大家分享: var socket; function connect() { var host = "ws://&quo ...