博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Reac-Native ScrollView回到顶部
阅读量:4085 次
发布时间:2019-05-25

本文共 6185 字,大约阅读时间需要 20 分钟。

ScrollView 是一个滚动控件,当内容显示不全时可以通过滚动显示。

属性:

View props… :View的所有属性 
contentContainerStyle:内容容器的样式,所有的子视图都会包裹在内容容器内。 
horizontal:为true时,横向滚动 
keyboardDismissMode :用户拖拽滚动视图的时候,是否要隐藏软键盘。

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

keyboardShouldPersistTaps: 如果当前界面有软键盘,那么点击scrollview后是否收起键盘

never(默认值):点击TextInput以外的子组件会使当前的软键盘收起。此时子元素不会收到点击事件。 
always:键盘不会自动收起,ScrollView也不会捕捉点击事件,但子组件可以捕获。 
handled:当点击事件被子组件捕获时,键盘不会自动收起。这样切换TextInput时键盘可以保持状态。多数带有TextInput的情况下你应该选择此项。 
false:已过期,请使用’never’代替。 
true:已过期,请使用’always’代替。

onContentSizeChange:ScrollView内部可滚动内容的视图发生变化时调用,参数为内容视图的宽和高 
onScroll:滚动的过程中,每帧最多调用一次此回调函数 
refreshControl:可以进行指定RefreshControl组件。这样可以为ScrollView添加下拉刷新的功能. 
showsHorizontalScrollIndicator:显示水平滚动条 
showsVerticalScrollIndicator:显示垂直滚动条 
style:样式属性

Flexbox… 
ShadowProp#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

pagingEnabled:当值为true时,滚动条会停在滚动视图的尺寸的整数倍位置。这个可以用在水平分页上。默认值为false。比如我们滚动到多余半个屏幕的时候松手,控件会自动滚到下一页的位置。 
scrollEnabled:是否可以滚动 
scrollTo : (y: number | { x?: number, y?: number, animated?: boolean }, x: number, animated: boolean) 
滚动到指定的x, y偏移处。第三个参数为是否启用平滑滚动动画。 
scrollToEnd: 滚动到视图底部(水平方向的视图则滚动到最右边)scrollToEnd({animated: true})则启用平滑滚动动画

Demo

import React, {Component} from 'react';import {    StyleSheet,    View,    Text,    ScrollView,    TextInput,    ToastAndroid,    Button,} from 'react-native';export default class ScrollViewDemo extends Component {
state = { data:['第1个', '第2个', '第3个', '第4个', '第5个', '第6个', '第7个', '第8个', '第9个', '第10个'], } _scroll; render() { return (

效果图

这里写图片描述

/

页面中有个ScrollView,点击某个Button,跳到ScrollView的顶部。

可以参考以下例子:

<ScrollView  ref={component => this._scrollView = component}  />

 //this._scrollView.scrollTo(0, 0);  这个有动画效果

 

 this._scrollView.scrollWithoutAnimationTo(0,0);    //这个没有动画效果

先说明一下使用背景吧==>用ScrollView写的一个页面,页面底部有一个下一篇按钮,但是点击按钮重新render之后,页面依旧在底部,没有自动跳到顶部,视觉效果很差http://blog.csdn.net/weixin_38289699/article/details/71218791

解决的方法是在ScrollView的标签中加入相当于类名的属性

 
<ScrollView ref
=
'totop'
>
          
<View style
={styles.container}
>
            
<View style
={styles.top}
><
Text style
={
{ color
: 
'#1eaaca' }}
>{this.state.ClassTitle}
</
Text
></View
>
            
<View
><
Text style
={
{ fontSize
: 
20, lineHeight
: 
60, }}
>{this.state.title}
</
Text
></View
>
<TouchableHighlight onPress
={() 
=> {
                    this.
getPrevious()
                  }}
>
                    
<View
>
                      
<View style
={styles.iconboder}
>
                        
<View style
={styles.border}
></View
>
                      
</View
>
                      
<
Text
>上一篇
</
Text
>
                    
</View
>
                  
</TouchableHighlight
>
</ScrollView>

其中的ref='totop',==>ref相当于锚点的id属性,'totop'是随意的命名,相当于类名

在调用这个方法的组件中这样书写

<TouchableHighlight onPress
={() 
=> {
                    this.
getPrevious()//点击调用的方法
                  }}
>
                    
<View
>
                      
<View style
={styles.iconboder}
>
                        
<View style
={styles.border}
></View
>
                      
</View
>
                      
<
Text
>上一篇
</
Text
>
                    
</View
>
                  
</TouchableHighlight
>

在点击调用的方法getPrevious()中

getPrevious(){

 
//这里是控制页面的初始位置的方法,相当于html中利用id的锚点连接方法,
totop相当于类名,组件的ref相当于锚点id,refs指同一类方法.
    this.refs.totop.
scrollTo({x
:
0,y
: 
0,animated
:
true});
需要三个参数,x轴的起始点,y轴的起始点.anmated是指是否有动画效果

}

项目中的整体方法比较复杂,这里简单把功能写出来了,大家参考下.

简单理解就是ref的一些属性控制的,大家可以看一下ref的详解.

你可能感兴趣的文章
QT打开项目提示no valid settings file could be found
查看>>
java LinkedList与ArrayList迭代器遍历和for遍历对比
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.182 - LeetCode1325 - C指针的魅力
查看>>
带WiringPi库的交叉笔译如何处理二之软链接概念
查看>>
Java8 HashMap集合解析
查看>>
自定义 select 下拉框 多选插件
查看>>
Linux常用统计命令之wc
查看>>
fastcgi_param 详解
查看>>
搞定Java面试中的数据结构问题
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
Winform多线程
查看>>
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
《软件过程管理》 第九章 软件过程的评估和改进
查看>>
《数据库系统概论》 第三章 关系数据库标准语言SQL
查看>>
《计算机网络》第五章 运输层 ——TCP和UDP 可靠传输原理 TCP流量控制 拥塞控制 连接管理
查看>>
二叉树深度优先遍历和广度优先遍历
查看>>
生产者消费者模型,循环队列实现
查看>>