一.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. 《ASP.NET MVC4 WEB编程》学习笔记------ViewBag、ViewData和TempData的使用和区别

    本文转自大卫Baby ViewBag和ViewData其实是互通的ViewBag和ViewData的区别:ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型,它会在程序运行的时候动 ...

  2. First Position of Target

    For a given sorted array (ascending order) and a target number, find the first index of this number ...

  3. C++代码重用——包含

    #ifndef PAIRS_H #define PAIRS_H #include <iostream> #include <valarray> template <cla ...

  4. 【leetcode】Letter Combinations of a Phone Number

    Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations ...

  5. swfit 中的类型属性说明

    swift 中不叫做类属性,叫类型属性,因为在swift中,struct 和enum也是可以有这种属性的,叫类属性明显不准. 有以下注意事项: 对于值类型(指结构体和枚举)可以定义存储型和计算型类型属 ...

  6. 在Android上使用fontAwesome

    再也不用做那些讨厌的小图标了! 从网上找了些资料,总结下在android上使用fontAwesome的方法. 1.到官网上下载资源包,找到其中的字体文件fontawesome-webfont.ttf, ...

  7. 【JAVA、C++】LeetCode 002 Add Two Numbers

    You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...

  8. 【mysql】用navicat连接虚拟机mysql出现错误代码(10038)

    来源: http://www.cnblogs.com/ohmydenzi/p/5521121.html http://blog.csdn.net/chana1101/article/details/3 ...

  9. Codeforces 417 C

    Football Time Limit: 1000MS   Memory Limit: 262144KB   64bit IO Format: %I64d & %I64u Submit Sta ...

  10. August 4th, 2016, Week 32nd, Thursday

    How does the world look through your eyes? 你眼中的世界是什么样的呢? This morning I saw a girl that is just the ...