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图标 以及一些导航图片(例如:菜单功 ...
随机推荐
- sharepoint读取启用了追加功能的多行文本的历史版本记录
当建立多行文本栏时,有个功能就是"追加对现有文本所做的更改",这个功能启用后,这个多行文本就只运行追加内容而不允许修改以前提交的内容.常常被应用在多个用户之间的协作.问题的追踪等记 ...
- C++ traits
[本文链接] http://www.cnblogs.com/hellogiser/p/cplusplus-traits.html [分析] 什么是traits?其实它并不是一个新的概念,上个世纪90年 ...
- eclipse连接虚拟机
1.启动eclipse 2.打开 "Help/Install New Software..." 3.打开Add…… 4.输入Name: Genymobile Lo ...
- Live Archive 3644 X-Plosives 解题报告
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=1 ...
- 一箭双雕打开Genesis
打开记事本,将如下内容填入,保存时将后缀名改为bat @ ECHO 正在清理垃圾文件...del C:\tmp\*.* /f /q@ ECHO 清理完毕@ ECHO OFF@ ECHO.@ ECHO. ...
- OC内存管理(MRC)
首先说明一下几块存储区域: 栈区(局部变量.函数参数值) 堆区(对象.手动申请/释放内存) BSS区(未初始化的全局变量.未初始化的静态数据) 常量区(字符串常量以及初始化后的全局变量.初始化后的静态 ...
- 用mtrace检查内存泄漏
http://blog.csdn.net/ixidof/article/details/6638066内存泄漏检查方法(for Linux) 如果你更想读原始文档, 请参考glibc info的&qu ...
- JUC回顾之-可重入的互斥锁ReentrantLock
1.什么是可重锁ReentrantLock? 就是支持重新进入的锁,表示该锁能够支持一个线程对资源的重复加锁. 2.ReentrantLock分为公平锁和非公平锁:区别是在于获取锁的机制上是否公平. ...
- Ubuntu16.04 安装openjdk-7-jdk
Ubuntu16.04 安装openjdk-7-jdk sudo apt-get install openjdk-7-jre 或者sudo apt-get install openjdk-7-jdk ...
- [转]ASP.NET Web.Config 读写辅助类
using System; using System.Configuration; using System.Web; using System.Web.Configuration; namespac ...