前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >React Native之ViewPagerAndroid 组件

React Native之ViewPagerAndroid 组件

作者头像
xiangzhihong
发布2018-02-05 16:18:28
1K0
发布2018-02-05 16:18:28
举报
文章被收录于专栏:向治洪向治洪

概述

今天我们来讲解一下关于 ViewPager 的使用,它是一个允许子视图左右滚动翻页的容器。我们知道在Android开发中系统有ViewPager这个组件,作用是实现滚动翻页的,在RN中也是有这么一个组件的(ViewPagerAndroid),每一个ViewPagerAndroid的子容器会被视作一个单独的页,并且会被拉伸填满ViewPagerAndroid。

我们来看一段官方给出的例子:

代码语言:javascript
复制
render: function() {
  return (
    <ViewPagerAndroid
      style={styles.viewPager}
      initialPage={0}>
      <View style={styles.pageStyle}>
        <Text>First page</Text>
      </View>
      <View style={styles.pageStyle}>
        <Text>Second page</Text>
      </View>
    </ViewPagerAndroid>
  );
}

...

var styles = {
  ...
  pageStyle: {
    alignItems: 'center',
    padding: 20,
  }
}

写法很简单,通过标签来包裹控件,然后里面添加相应的属性。

ViewPagerAndroid属性

initialPage number 顾名思义:初始索引页,当然我们也可以通过 setPage 函数来翻页,还可以通过 onPageSelected 方法来监听页面的滑动。 keyboardDismissMode enum(‘none’, “on-drag”) 这个还是很人性化的,就是监听在滑动的时候是否隐藏软键盘。 none : 默认值,意思是不会隐藏消失 on-drag : 当拖拽滑动时软键盘消失 onPageScroll function 当在页面间滑动切换时(不管是动画还是由于用户在页间滑动或者拖拽)执行。 回调参数中的event.nativeEvent对象会包含如下数据: position 从左数起第一个当前可见的页面的下标。 offset 一个在[0,1)(大于等于0,小于1)之间的范围,代表当前页面切换的状态。值x表示现在”position”所表示的页有(1 - x)的部分可见,而下一页有x的部分可见。] onPageScrollStateChanged function 顾名思义:当页面滑动状态变化时调用这个函数,页面滑动的状态有三种: idle : 无交互时,空闲状态 dragging : 拖拽滑动中,意思是页面正在拖拽当中 settling : 处理中,意味着当前页面发生过交互,且正在结束开头或收尾的动画。 onPageSelected function 上面我们提到过,这个函数是当页面切换完成后调用。该方法回调参数中的event.nativeEvent对象会携带一个属性 : ‘position’ 。该属性代表当前选中的页面的索引值。

scrollEnabled bool 布尔值,true是默认是,可以滑动,false代表禁止滚动。

ViewPagerAndroid实例

为了更好的理解,我们自己实现一个实例,效果如下:

代码语言:javascript
复制
import React, { Component } from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  ViewPagerAndroid,
  TouchableOpacity,
  Image,
  View
} from 'react-native';
var PAGES = 2;
var IMAGE_URIS = [
  'http://apod.nasa.gov/apod/image/1410/20141008tleBaldridge001h990.jpg',
  'http://apod.nasa.gov/apod/image/1409/volcanicpillar_vetter_960.jpg',
];
export default class ViewPagerDemo extends Component {
  state={
	page:0,
  };
  render() {
  var pages = [];
  for(let i = 0;i < PAGES;i++){
	pages.push(
	  <View key={i} collapsable={false}>
	   <TouchableOpacity
	   activeOpacity={1}
	   onPress={this.onPress}
	   >
		<Image
		  style={styles.image}
		  source={{uri:IMAGE_URIS[i]}}>
		</Image>
		</TouchableOpacity>
	  </View>
	);
  }
	return (
	  <View style={styles.container}>
		<ViewPagerAndroid style={styles.viewPager}
		initialPage={0}
		onPageSelected={this.onPageSelected}
		>
		{pages}
		</ViewPagerAndroid>
		<Text style={{flex:1,alignSelf:'center'}}>当前第{this.state.page+1}页</Text>
	  </View>
	);
  }
  onPageSelected=(e)=>{
	this.setState({page:e.nativeEvent.position});
  }
  onPress=()=>{
	alert('第'+(this.state.page+1)+'页被点击了');
  }
}
const styles = StyleSheet.create({
  container: {
	flex: 1,
	backgroundColor: '#F5FCFF',
  },
  image: {
	height: 200,
	padding: 20,
  },
  viewPager: {
	flex: 1,
  },
});
AppRegistry.registerComponent('ViewPagerDemo', () => ViewPagerDemo);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-12-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • ViewPagerAndroid属性
  • ViewPagerAndroid实例
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档