react native Modal 实现ActionSheet
来源:互联网 发布:数据库的课程设计 编辑:程序博客网 时间:2024/05/21 03:18
RN非常容易上手,而且很多组建均可以服用,Modal类似于Android/iOS的自定义dialog,位于整个屏幕最顶层,可做遮罩和蒙版效果,下面是自己封装的一个actionsheet,样式可以自定义,调用的时候使用ref就可以了,以下是源码:
import React,{Component,PropTypes} from 'react'import { View, StyleSheet, Text, Modal, TouchableOpacity, Dimensions} from 'react-native'const {width,height} =Dimensions.get('window')class MyBottomSheet extends Component{ static propTypes={ items:PropTypes.array, itemStyle:PropTypes.object, actionTitleStyle:PropTypes.object, itemTitleStyle:PropTypes.object, modalTitle:PropTypes.string, } static defaultProps={ items:[], itemStyle:{}, actionTitleStyle:{}, itemTitleStyle:{}, modalTitle:'' } constructor(props){ super(props) this.state = { modalVisible:false, } } showModal(){ this.setState({modalVisible:true}) } cancelModal(){ this.setState({modalVisible:false}) } render(){ let actionSheets = this.props.items.map((item,i)=>{ return( <TouchableOpacity key={i} style={[styles.actionItem,this.props.itemStyle]} onPress={item.click}> <Text style={[styles.actionItemTitle,this.props.itemTitleStyle]} >{item.title}</Text> </TouchableOpacity> ) }) return <Modal animationType="slide" visible={this.state.modalVisible} transparent={true} onRequestClose={()=>this.setState({modalVisible:false})} > <View style={styles.modalStyle}> <View style={styles.subView}> <View style={styles.itemContainer}> <Text style={[styles.actionTitle,this.props.actionTitleStyle]} >{this.props.modalTitle}</Text> {actionSheets} </View> <View style={[styles.itemContainer]}> <TouchableOpacity style={[styles.actionItem,this.props.itemStyle,{borderTopWidth:0}]} onPress={()=>this.setState({modalVisible:false})}> <Text style={[styles.actionItemTitle,this.props.itemTitleStyle]}>取消</Text> </TouchableOpacity> </View> </View> </View> </Modal> }}const styles = StyleSheet.create({ modalStyle:{ justifyContent:'flex-end', alignItems:'center', flex:1 }, subView:{ justifyContent:'flex-end', alignItems:'center', alignSelf:'stretch', width:width, }, itemContainer:{ marginLeft:15, marginRight:15, marginBottom:15, borderRadius:6, backgroundColor:'#fff', justifyContent:'center', alignItems:'center', }, actionItem:{ width:width-30, height:45, alignItems:'center', justifyContent:'center', borderTopColor:'#cccccc', borderTopWidth:0.5, }, actionTitle:{ fontSize:13, color:'#808080', textAlign:'center', paddingTop:10, paddingBottom:10, paddingLeft:15, paddingRight:15, }, actionItemTitle:{ fontSize:16, color:'#444444', textAlign:'center', },})export default MyBottomSheet;
阅读全文
0 0
- react native Modal 实现ActionSheet
- react-native-actionsheet
- React Native之Modal实现自定义Dialog
- react native 实现modal的自适应大小
- react-native-modal-alert
- react-native Modal使用
- react-native modal封装
- React Native 自定义modal
- React Native Modal踩坑
- React Native之Modal组件实现遮罩层效果
- React Native之Modal组件实现遮罩层效果
- react-native modal自定义对话框
- react native Modal 使用详解
- React-Native 组件之 Modal
- React native学习第十一章:Modal
- React Native 控件之 Modal 详解
- React Native 之 Modal介绍与使用
- React-Native 之 Modal介绍与使用
- Android判断网络连接状态并进入网络设置页面
- zabbix 监控windows下kafka
- 在windows下的QT编程中的char*,wchar_t*与QString之间的转换
- 自定义属性、索引值
- mysql 列转行,合并字段
- react native Modal 实现ActionSheet
- 字体网ziti163.com全面启用SSL服务
- 尚学堂百战程序员1573题,答案,仅供参考我自己做的第一章
- c++ 61,62,63
- 64. Minimum Path Sum Medium
- Java中的浅拷贝与深拷贝
- js中字符串处理常用的方法(字符分割、字符拼接、截取字符串、是否包含一个字符串)
- 中位数
- @JsonProperty的使用