一: 掌握两点:

1.

ScrollView必须有一个确定的高度才能正常工作,因为它实际上所做的就是将一系列不确定高度的子组件装进一个确定高度的容器(通过滚动操作)。要给一个ScrollView确定一个高度的话,要么直接给它设置高度(不建议),要么确定所有的父容器都已经绑定了高度。在视图栈的任意一个位置忘记使用{flex:1}都会导致错误,你可以使用元素查看器来查找问题的原因。

2.

ScrollView内部的其他响应者尚无法阻止ScrollView本身成为响应者。

2.常用属性:

1>contentContainerStyle StyleSheetPropType(ViewStylePropTypes) #

这些样式会应用到一个内层的内容容器上,所有的子视图都会包裹在内容容器内

2>horizontal bool #

当此属性为true的时候,所有的的子视图会在水平方向上排成一行,而不是默认的在垂直方向上排成一列。默认值为false。

3>

keyboardDismissMode enum('none', "interactive", 'on-drag') #

用户拖拽滚动视图的时候,是否要隐藏软键盘。

  • none(默认值),拖拽时不隐藏软键盘。
  • on-drag 当拖拽开始的时候隐藏软键盘。
  • interactive 软键盘伴随拖拽操作同步地消失,并且如果往上滑动会恢复键盘。安卓设备上不支持这个选项,会表现的和none一样。

4>keyboardShouldPersistTaps bool #

当此属性为false的时候,在软键盘激活之后,点击焦点文本输入框以外的地方,键盘就会隐藏。如果为true,滚动视图不会响应点击操作,并且键盘不会自动消失。默认值为false。

5>onContentSizeChange function #

此函数会在ScrollView内部可滚动内容的视图发生变化时调用。

调用参数为内容视图的宽和高: (contentWidth, contentHeight)

此方法是通过绑定在内容容器上的onLayout来实现的。

6>onScroll function #

在滚动的过程中,每帧最多调用一次此回调函数。调用的频率可以用scrollEventThrottle属性来控制。

7>refreshControl element #

指定RefreshControl组件,用于为ScrollView提供下拉刷新功能。

8>removeClippedSubviews bool #

(实验特性):当此属性为true时,屏幕之外的子视图(子视图的overflow样式需要设为hidden)会被移除。这个可以提升大列表的滚动性能。默认值为true。

9>showsHorizontalScrollIndicator bool #

当此属性为true的时候,显示一个水平方向的滚动条。

10>showsVerticalScrollIndicator bool #

当此属性为true的时候,显示一个垂直方向的滚动条。

11>style style #

Flexbox...

ShadowPropTypesIOS#style...

Transforms...

backfaceVisibility enum('visible', 'hidden')

backgroundColor string

borderColor string

borderTopColor string

borderRightColor string

borderBottomColor string

borderLeftColor string

borderRadius number

borderTopLeftRadius number

borderTopRightRadius number

borderBottomLeftRadius number

borderBottomRightRadius number

borderStyle enum('solid', 'dotted', 'dashed')

borderWidth number

borderTopWidth number

borderRightWidth number

borderBottomWidth number

borderLeftWidth number

opacity number

overflow enum('visible', 'hidden')

shadowColor string

shadowOffset {width: number, height: number}

shadowOpacity number

shadowRadius number

12>android--endFillColor color #

有时候滚动视图会占据比实际内容更多的空间。这种情况下可以使用此属性,指定以某种颜色来填充多余的空间,以避免设置背景和创建不必要的绘制开销。一般情况下并不需要这种高级优化技巧。

ios--alwaysBounceHorizontal bool #

当此属性为true时,水平方向即使内容比滚动视图本身还要小,也可以弹性地拉动一截。当horizontal={true}时默认值为true,否则为false。

ios--alwaysBounceVertical bool #

当此属性为true时,垂直方向即使内容比滚动视图本身还要小,也可以弹性地拉动一截。当horizontal={true}时默认值为false,否则为true。

ios--automaticallyAdjustContentInsets bool #

如果滚动视图放在一个导航条或者工具条后面的时候,iOS系统是否要自动调整内容的范围。默认值为true。(译注:如果你的ScrollView或ListView的头部出现莫名其妙的空白,尝试将此属性置为false)

ios--bounces bool #

当值为true时,如果内容范围比滚动视图本身大,在到达内容末尾的时候,可以弹性地拉动一截。如果为false,尾部的所有弹性都会被禁用,即使alwaysBounce*属性为true。默认值为true。

ios--bouncesZoom bool #

当值为true时,使用手势缩放内容可以超过min/max的限制,然后在手指抬起之后弹回min/max的缩放比例。否则的话,缩放不能超过限制。

ios--canCancelContentTouches bool #

当值为false时,一旦有子节点响应触摸操作,即使手指开始移动也不会拖动滚动视图。默认值为true(在以上情况下可以拖动滚动视图。)

ios--centerContent bool #

当值为true时,如果滚动视图的内容比视图本身小,则会自动把内容居中放置。当内容比滚动视图大的时候,此属性没有作用。默认值为false。

ios--contentInset {top: number, left: number, bottom: number, right: number} #

内容范围相对滚动视图边缘的坐标。默认为{0, 0, 0, 0}。

ios--contentOffset PointPropType #

用来手动设置初始的滚动坐标。默认值为{x: 0, y: 0}。

ios--decelerationRate number #

一个浮点数,用于决定当用户抬起手指之后,滚动视图减速停下的速度。常见的选项有:

  • Normal: 0.998 (默认值)
  • Fast: 0.9

ios--directionalLockEnabled bool #

当值为真时,滚动视图在拖拽的时候会锁定只有垂直或水平方向可以滚动。默认值为false。

ios--maximumZoomScale number #

允许的最大缩放比例。默认值为1.0。

ios--minimumZoomScale number #

允许的最小缩放比例。默认值为1.0。

ios--onRefreshStart function #

已过期

请使用refreshControl 属性代替。

ios--onScrollAnimationEnd function #

当滚动动画结束之后调用此回调。

pagingEnabled bool #

当值为true时,滚动条会停在滚动视图的尺寸的整数倍位置。这个可以用在水平分页上。默认值为false。

ios--scrollEnabled bool #

当值为false的时候,内容不能滚动,默认值为true。

ios--scrollEventThrottle number #

这个属性控制在滚动过程中,scroll事件被调用的频率(单位是每秒事件数量)。更大的数值能够更及时的跟踪滚动位置,不过可能会带来性能问题,因为更多的信息会通过bridge传递。默认值为0,意味着每次视图被滚动,scroll事件只会被调用一次。

ios--scrollIndicatorInsets {top: number, left: number, bottom: number, right: number} #

决定滚动条距离视图边缘的坐标。这个值应该和contentInset一样。默认值为{0, 0, 0, 0}。

ios--scrollsToTop bool #

当此值为true时,点击状态栏的时候视图会滚动到顶部。默认值为true。

ios--snapToAlignment enum('start', "center", 'end') #

当设置了snapToInterval,snapToAlignment会定义停驻点与滚动视图之间的关系。

  • start (默认) 会将停驻点对齐在左侧(水平)或顶部(垂直)
  • center 会将停驻点对齐到中间
  • end 会将停驻点对齐到右侧(水平)或底部(垂直)

ios--snapToInterval number #

当设置了此属性时,会让滚动视图滚动停止后,停止在snapToInterval的倍数的位置。这可以在一些子视图比滚动视图本身小的时候用于实现分页显示。与snapToAlignment组合使用。

ios--stickyHeaderIndices [number] #

一个子视图下标的数组,用于决定哪些成员会在滚动之后固定在屏幕顶端。举个例子,传递stickyHeaderIndices={[0]}会让第一个成员固定在滚动视图顶端。这个属性不能和horizontal={true}一起使用。

ios--zoomScale number #

滚动视图内容初始的缩放比例。默认值为1.0。

三.方法#

scrollTo(y: number | { x?: number, y?: number, animated?: boolean }, x: number, animated: boolean) #

滚动到指定的x, y偏移处。第三个参数为是否启用平滑滚动动画。

使用示例:

scrollTo({x: 0, y: 0, animated: true})

四.代码如下:

/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/ import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
ScrollView,
} from 'react-native'; class ViewDemo extends Component {
render() {
return (
<View style={styles.container}>
<ScrollView
horizontal = {true}
showsHorizontalScrollIndicator = {false}
showsVerticalScrollIndicator = {false}
alwaysBounceHorizontal = {false}
bounces = {true}
directionalLockEnabled = {true}
>
{this.rendChildView()}
</ScrollView>
</View>
);
} rendChildView(){ // 数组
var allChilds = [];
var colors = ['red','yellow','orange','purple','green'];
// 遍历
for (var i = ; i < ; i++){ allChilds.push( <View key = {i} style = {{backgroundColor: colors[i],width: ,height: }}>
<Text>{i}</Text>
</View>
);
}
// 返回
return allChilds;
}
} const styles = StyleSheet.create({
container: {
flexDirection: 'row',
backgroundColor: 'green', // 设置背景颜色 },
innerStyle: {
backgroundColor: 'red',
width:
},
innerStyle1: {
backgroundColor: 'yellow',
width:
},
}); AppRegistry.registerComponent('ViewDemo', () => ViewDemo);

每天学习一点点,加油...一天又过了...呜呜,好快好快.....一个人宅在家里也能愉快的玩着..

ScrollView-基本设置的更多相关文章

  1. ScrollView嵌套ListView,GridView数据加载不全问题的解决

    我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...

  2. Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)

    Android ScrollView监听滑动到顶部和底部,虽然网上很多资料都有说,但是不全,而且有些细节没说清楚 使用场景: 1. 做一些复杂动画的时候,需要动态判断当前的ScrollView是否滚动 ...

  3. React-Native学习系列(二) Image和ScrollView

    接下来,我们接着(一)继续讲,今天我们学习的是Image组件和ScrollView组件. Image组件 Image:一个用于显示多种不同类型图片的React组件.那么要如何使用呢? 引入本地图片: ...

  4. iOS学习笔记——滚动视图(scrollView)

    滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性 @interface BoViewController : UIViewController<UIScro ...

  5. 实现下来ScrollView放大轮播图

    创建工程,创建一个UIScrollView属性,并遵循其协议: #define kWidth self.view.frame.size.width//屏幕宽 #define kHeight self. ...

  6. React Native之 ScrollView介绍和使用

    前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...

  7. ScrollView分栏视图分析

    代码精华部分如下: //1.添加scrollView /* 1). 添加一个scrollView; 2).创建关注.热门.附近三个控制器. 3). 存储它们的名字到数组中,遍历并放到本控制器里. 4) ...

  8. IOS实现自动循环滚动广告--ScrollView的优化和封装

    一.问题分析 在许多App中,我们都会见到循环滚动的视图,比如广告,其实想实现这个功能并不难,用ScrollView就可以轻松完成,但是在制作的过程中还存在几个小问题,如果能够正确的处理好这些小问题, ...

  9. ReactNative 根据scrollView/listview滑动距离动态修改NavBar颜色

    我们常见某些APP上滑的时候,NavBar颜色会从透明渐变为某种颜色 原理非常简单,根据scrollView的回调动态修改NavBar的透明度即可. 在RN中,尤其是ListView中这个回调不是很好 ...

  10. iOS无限循环滚动scrollview

    经常有园友会问"博主,有没有图片无限滚动的Demo呀?", 正儿八经的图片滚动的Demo我这儿还真没有,今天呢就封装一个可以在项目中直接使用的图片轮播.没看过其他iOS图片无限轮播 ...

随机推荐

  1. SCU 4442 party 二分图最大点权独立集

    每个青蛙喝黑茶或者红茶或者都可以喝 M个矛盾关系 有矛盾的不能喝同种茶 但你可以花费Wi使得这个青蛙消除所有矛盾 把矛盾当作边 青蛙当作点 如果这两个青蛙只喝不同的一种茶就不建边 题目中保证了不存在奇 ...

  2. Airtest 支持的手机,系统等环境

    据个人经验,Airtest 支持的以下设备会跑的比较666 Android 平台 华为荣耀9青春版 版本:8.0.0 型号:LLD-AL10 评价:自动化运行最6 华为 荣耀10青春版 版本:9.0. ...

  3. string::cbegin string::cend

    const_iterator cbegin() const noexcept; const_iterator cend() const noexcept;注:返回常量迭代器,不能修改 #include ...

  4. c语言第一次作业1

    第一次作业 一 你对软件工程或者计算机科学与技术专业的了解是什么? 软件工程是一门研究用工程化方法构建和维护有效的,实用的和高质量的软件的学科,涉及程序语言设计,数据库,软件开发工具,系统平台,设计模 ...

  5. vue2 练习

    table标签的frame和rules属性,可以控制边框的显示.frame属性控制着表格最外围的四条边框的可见性,而 rules 则控制着表格内部边框的可见性. frame属性可取的值及含义如下: * ...

  6. Javascritp 数据结构和二叉树算法

    1,所有圆圈都是一个节点,里面的数字就是节点的值.8上面没有父节点,那么8就是根节点,而4,7,13没有子节点了,称之为叶子结点.其他的称之为:中间结点. 2,8节点是3和10的父节点,3是8的左孩子 ...

  7. Elasticsearch7.1中文文档-第一章-入门

    安装openjdk wget --no-cookies --no-check-certificate --header "Cookie: oraclelicense=accept-secur ...

  8. BZOJ 2982 combination 脑子+组合数学

    可以发现,整个数列构成一个树形结构,并且是个完全二叉堆(小根堆). 并且这个堆的形态在给定$n$后是固定的,第1个位置上显然只能放1. 对子树的根来说,他自己是所分得的数集中最小的那个,所以从剩下$s ...

  9. CSP-S 模拟测试 51 题解

    考试过程: 惯例先看一遍三道题,T1 一开始反应要求割点,但是这是有向图,肯定不能求割点,康了一下数据范围,有40%是树的,还不错,决定待会在打. 看T2 字符串题,完了我字符串最弱了,肯定只能打暴力 ...

  10. #define定义宏函数 的正确使用

    如何使用宏来定义一个自定义函数呢?首先我们来看下面这段代码 #define SQUARE(x) x*x int main() { int a = 5; printf("SQUARE(a): ...