一.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的更多相关文章

  1. 第27讲 UI组件之 ScrollView与底部动态添加数据

    第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...

  2. RN组件备忘录

    1:ActivityIndicator:圆形的loading提示符号. 2:Button:按钮 3:FlatList:高性能列表组件,支持下拉刷新. 4:Image:图片组件,能显示 网络图片.静态资 ...

  3. React Native组件之ScrollView 和 StatusBar和TabBarIos

    React Native中的组件ScrollView类似于iOS中的UIScrollView,其基本的使用方法和熟悉如下: /** * Sample React Native App * https: ...

  4. React Native常用组件之ScrollView

    1. 两个要点 1.1 ScrollView必须有一个确定的高度才能正常工作 它实际上所做的就是将一系列不确定高度的子组件装进一个确定高度的容器(通过滚动操作) 通常有两种做法: 第一种: 直接给该S ...

  5. React Native常用组件之ScrollView组件

    一.前言 从iOS开发的经验来看,scrollView无疑是移动开发中很重要的一个组件,比如后面会学到的ListView就是继承自它.那么,在开发中比如:焦点图.引导页等地方都有其的影子,那接下来我们 ...

  6. 【Flutter学习】可滚动组件之ScrollView

    一,概述 ScrollView 是一个带有滚动的视图组件. 二,组成部分 ScrollView 由三部分组成: Scrollable - 它监听各种用户手势并实现滚动的交互设计.可滚动Widget都直 ...

  7. RN组件之Navigator

    一.Navigator 1.使用导航器可以在应用的不同场景(页面)间进行切换.导航器通过路由对象来分辨不同的场景.利用renderScene方法,导航栏可以根据 指定的路由来渲染场景. 可以通过con ...

  8. RN组件之Switch与Picker

    一.Switch选择开关控件 1.该组件为Android/IOS通用的两种状态的开关组件 2.属性方法 (1)disabled bool:如果该值为true,用户就无法点击switch开关,默认为fa ...

  9. RN组件之ToolbarAndroid

    一.ToolbarAndroid 1.该组件封装了Android平台中的ToolBar组件(只适用于Android平台).一个ToolBar组件可以显示一个Logo图标 以及一些导航图片(例如:菜单功 ...

随机推荐

  1. RabbitMQ消息队列:ACK机制

    每个Consumer可能需要一段时间才能处理完收到的数据.如果在这个过程中,Consumer出错了,异常退出了,而数据还没有处理完成,那么 非常不幸,这段数据就丢失了. 因为我们采用no-ack的方式 ...

  2. 安装完mysql后用root不能su成mysql

    现象: debian的机器用aptitude install mysql-server-5.1 后,用id mysql 可看出已经建了mysql用户,但是用root来su mysql 不成功,/var ...

  3. Android 和iOS 创建本地通知

    1 Android 中的发送本地通知的逻辑如下 先实例化Notification.Builder,再用builder创建出具体的Notification,创建时要指定好启动用的PendingInten ...

  4. MySQL下载安装、配置与使用(win7x64)

    用过MySQL之后,不论容量的话,发现比其他两个(sql server .oracle)好用的多,一下子就喜欢上了.下面给那些还不知道怎么弄的童鞋们写下具体的方法步骤. 工具/原料 电脑 win7 6 ...

  5. 在eclipse中配置一个简单的spring入门项目

    spring是一个很优秀的基于Java的轻量级开源框架,为了解决企业级应用的复杂性而创建的,spring不仅可用于服务器端开发,从简单性.可测试性和松耦合性的角度,任何java应用程序都可以利用这个思 ...

  6. DP:Cow Bowling(POJ 3176)

    北大教你怎么打保龄球 题目很简单的,我就不翻译了,简单来说就是储存每一行的总数,类似于状态压缩 #include <stdio.h> #include <stdlib.h> # ...

  7. easyfinding(codevs 3280)

    3280 easyfinding  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 给一个M 行N  列 ...

  8. Android实现监测网络状态

    本文主要用到了安卓监测网络状态变化功能,实现了WIFI,3G,无网络状态切换时发出通知的功能. 主要知识点 service broadcast 接口回调实现 service的基本知识 service可 ...

  9. 运行基准测试hadoop集群中的问题:org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /benchmarks/TestDFSIO/io_data/test_

    在master(即:host2)中执行 hadoop jar hadoop-test-1.1.2.jar DFSCIOTest -write -nrFiles 12 -fileSize 10240 - ...

  10. 在linux上安装psycopg2出错--Error: pg_config executable not found.

    这个错误可能是因为缺少PGSQL的相关库吧. 网上有很多解决办法,我最终用以下方式解决: yum install postgresql postgresql-devel python-devel