React-Native学习笔记之:Modal实现覆盖效果(类似安卓中PopuWindow)
2017-04-17 14:43
549 查看
Modal组件可以用来覆盖包含React Native根视图的原生视图,类似于Android原生控件中的PopuWindow效果。 例如点击某个Button会在当前页面上弹出一个覆盖层页面,可以在上面实现指定的操作。
import React, {Component} from 'react'; import { AppRegistry, StyleSheet, View, TouchableOpacity, Text } from 'react-native'; import ModalPage from './ModalPage' export default class StudyGithub extends Component { constructor(props) { super(props); this.state = { /*设置弹出框是否可见*/ viewCanVisible: false, } } render() { return (<View> <TouchableOpacity onPress={()=>this.showPage()}> <Text style={styles.tabText}>点击可以弹出页面</Text> </TouchableOpacity> {/*根布局中添加弹出框层*/} {this.renderVisibleView()} </View>); } /** * visible={this.state.viewCanVisible}设置是否可见 * onClose设置关闭操作 * @returns {XML} */ renderVisibleView() { return ( <ModalPage visible={this.state.viewCanVisible} {...this.props} onClose={()=> { this.setState({viewCanVisible: false}) }}/> ) } /** * 弹出框可见 */ showPage() { this.setState({viewCanVisible: true}); } } const styles = StyleSheet.create({ container: { flex: 1 }, tabText: { fontSize: 20, color: 'blue', margin: 20, paddingLeft: 15 }, }); AppRegistry.registerComponent('StudyGithub', () =>StudyGithub);
覆盖层页面js实现:
import React, {Component} from 'react'; import { StyleSheet, Text, View, Modal, ScrollView, TouchableHighlight, Platform } from 'react-native'; export default class ModalPage extends Component { constructor(props) { super(props) } /** * animationType设置动画类型:PropTypes.oneOf(['none', 'slide', 'fade']) *transparent:是否透明 * visible:是否可见 * onRequestClose:关闭操作 * @returns {XML} */ render() { return (<Modal animationType={"slide"} transparent={true} visible={this.props.visible} onRequestClose={() => { this.props.onClose(); }} > <ScrollView style={styles.modalContainer}> {this.renderThemeItems()} </ScrollView> </Modal>) } /** * 随意添加五个Text,根据实际情况修改 * @returns {Array} */ renderThemeItems() { var views = []; for (let i = 0, length = 5; i < length; i++) { views.push(<View key={i}> {this.getContentItem('每一行的内容,点击弹出框会消失')} </View>) } return views; } getContentItem(content) { return ( <TouchableHighlight style={{flex: 1}} underlayColor='blue' onPress={()=>this.onClickItem()} > <View> <Text style={{fontSize:20,color:'white',margin:5,paddingLeft:20}}>{content}</Text> </View> </TouchableHighlight> ); } onClickItem() { this.props.onClose(); } } const styles = StyleSheet.create({ modalContainer: { flex: 1, margin: 10, marginTop: Platform.OS === 'ios' ? 20 : 10, backgroundColor: 'gray', borderRadius: 3, shadowColor: 'gray', shadowOffset: {width: 2, height: 2}, shadowOpacity: 0.5, shadowRadius: 2, padding: 3 } });
相关文章推荐
- 安卓学习笔记---Android-PickerView实现 3D滚轮效果(时间选择器、省市区三级联动,单项选择效果)
- 安卓学习笔记---popwindow类似的三级联动
- React-Native学习笔记之:导航器Navigator实现页面间跳转
- 安卓学习笔记---实现下拉图片放大,松开又自动回去效果 (ListView与ScrollView)
- React-native 实现表情商城 表情长按拖动预览(还原安卓微信效果)
- React Native之Modal组件实现遮罩层效果
- React Native之Modal组件实现遮罩层效果
- React学习笔记:使用jquery实现动画效果淡入淡出
- React-Native学习笔记之:实现简单地登录页面
- 学习笔记--实现类似酷狗音乐歌词的效果
- React Native 实现类似QQ的侧滑列表效果
- 学习笔记--代理与AOP及实现类似SPRING的可配置的AOP框架
- iPhone开发学习笔记007——Xcode4.2下iPhone多视图开发(自已创建MainWindow.xib和不用MainWindow.xib两种实现)
- 8-20学习练习[用两个tableview实现类似省市联动选择效果]
- 精确覆盖问题学习笔记(三)——算法的初步实现
- 安卓学习笔记----瀑布效果图片浏览器-----
- <转>cocos2d-x学习笔记(五)仿真树叶飘落效果的实现(精灵旋转、翻转、钟摆运动等综合运用)
- 【安卓笔记】使用ViewPager+Fragment实现选项卡切换效果
- 安卓个人学习笔记---利用服务实现电话监听