React Native学习教程之Modal控件自定义弹出View详解

前言

最近在学习RN,好多知识都懒得写,趁今天有空,来一发吧,Modal控件的一个小demo;下面话不多说了,来一起看看详细的介绍吧。

参考文章地址:http://reactnative.cn/docs/0.27/modal.html#content

Modal组件可以用来覆盖包含React Native根视图的原生视图(如UIViewController,Activity)。

在嵌入React Native的混合应用中可以使用Modal。Modal可以使你应用中RN编写的那部分内容覆盖在原生视图上显示。

下面是代码:

// HomePage
// 功能: 该类的作用
// Created by 小广 on 2016-06-12 上午.
// Copyright © 2016年 All rights reserved. 

'use strict';
import React, { Component } from 'react';
import {
 View,
 Text,
 Image,
 Modal,
 Navigator,
 TextInput,
 ScrollView,
 StyleSheet,
 Dimensions,
 TouchableHighlight,
} from 'react-native';
import NavigatorBar from '../tools/navigator'
var { width, height, scale } = Dimensions.get('window');
// 类
export default class HomePage extends Component {
 // 构造函数
 constructor(props) {
 super(props);
 this.state = {
  show:false,
 };
 } 

 // 加载完成
 componentDidMount(){
 //
 } 

 // view卸载
 componentWillUnmount(){
 //
 } 

 // 自定义方法区域
 // your method
 _leftButtonClick() { 

 }
 _rightButtonClick() {
 //
 console.log('右侧按钮点击了');
 this._setModalVisible();
 } 

 // 显示/隐藏 modal
 _setModalVisible() {
 let isShow = this.state.show;
 this.setState({
  show:!isShow,
 });
 } 

 // 绘制View
 render() {
  return (
  <View style={styles.container}>
   <NavigatorBar
   title='Modal测试'
   titleTextColor='#F2380A'
   rightItemTitle='按钮'
   rightTextColor='#F2380A'
   rightItemFunc={this._rightButtonClick.bind(this)} />
   <Modal
   animationType='slide'
   transparent={true}
   visible={this.state.show}
   onShow={() => {}}
   onRequestClose={() => {}} >
   <View style={styles.modalStyle}>
    <View style={styles.subView}>
    <Text style={styles.titleText}>
     提示
    </Text>
    <Text style={styles.contentText}>
     Modal显示的View 多行了超出一行了会怎么显示,就像这样显示了很多内容该怎么显示,看看效果
    </Text>
    <View style={styles.horizontalLine} />
    <View style={styles.buttonView}>
     <TouchableHighlight underlayColor='transparent'
     style={styles.buttonStyle}
     onPress={this._setModalVisible.bind(this)}>
     <Text style={styles.buttonText}>
      取消
     </Text>
     </TouchableHighlight>
     <View style={styles.verticalLine} />
     <TouchableHighlight underlayColor='transparent'
     style={styles.buttonStyle}
     onPress={this._setModalVisible.bind(this)}>
     <Text style={styles.buttonText}>
      确定
     </Text>
     </TouchableHighlight>
    </View>
    </View>
   </View>
  </Modal>
  </View>
  );
 } 

}
// Modal属性
// 1.animationType bool 控制是否带有动画效果
// 2.onRequestClose Platform.OS==='android'? PropTypes.func.isRequired : PropTypes.func
// 3.onShow function方法
// 4.transparent bool 控制是否带有透明效果
// 5.visible bool 控制是否显示 

// css样式
var styles = StyleSheet.create({
 container:{
 flex:1,
 backgroundColor: '#ECECF0',
 },
 // modal的样式
 modalStyle: {
 // backgroundColor:'#ccc',
 alignItems: 'center',
 justifyContent:'center',
 flex:1,
 },
 // modal上子View的样式
 subView:{
 marginLeft:60,
 marginRight:60,
 backgroundColor:'#fff',
 alignSelf: 'stretch',
 justifyContent:'center',
 borderRadius: 10,
 borderWidth: 0.5,
 borderColor:'#ccc',
 },
 // 标题
 titleText:{
 marginTop:10,
 marginBottom:5,
 fontSize:16,
 fontWeight:'bold',
 textAlign:'center',
 },
 // 内容
 contentText:{
 margin:8,
 fontSize:14,
 textAlign:'center',
 },
 // 水平的分割线
 horizontalLine:{
 marginTop:5,
 height:0.5,
 backgroundColor:'#ccc',
 },
 // 按钮
 buttonView:{
 flexDirection: 'row',
 alignItems: 'center',
 },
 buttonStyle:{
 flex:1,
 height:44,
 alignItems: 'center',
 justifyContent:'center',
 },
 // 竖直的分割线
 verticalLine:{
 width:0.5,
 height:44,
 backgroundColor:'#ccc',
 },
 buttonText:{
 fontSize:16,
 color:'#3393F2',
 textAlign:'center',
 },
}); 

注意:NavigatorBar是我自定义的一个View,充当导航条,你可以将其换成一个按钮就行了;

效果如图:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • React-Native 组件之 Modal的使用详解

    Modal组件可以用来覆盖包含React Native根视图的原生视图(如UIViewController,Activity),用它可以实现遮罩的效果. 属性 Modal提供的属性有: animationType(动画类型) PropTypes.oneOf(['none', 'slide', 'fade'] none:没有动画 slide:从底部滑入 fade:淡入视野 onRequestClose(被销毁时会调用此函数) 在 'Android' 平台,必需调用此函数 onShow(模态显示的时

  • React Native学习教程之Modal控件自定义弹出View详解

    前言 最近在学习RN,好多知识都懒得写,趁今天有空,来一发吧,Modal控件的一个小demo:下面话不多说了,来一起看看详细的介绍吧. 参考文章地址:http://reactnative.cn/docs/0.27/modal.html#content Modal组件可以用来覆盖包含React Native根视图的原生视图(如UIViewController,Activity). 在嵌入React Native的混合应用中可以使用Modal.Modal可以使你应用中RN编写的那部分内容覆盖在原生视

  • Android 倒计时控件 CountDownView的实例代码详解

    一个精简可自定义的倒计时控件,使用 Canvas.drawArc() 绘制.实现了应用开屏页的圆环扫过的进度条效果. 代码见https://github.com/hanjx-dut/CountDownView 使用 allprojects { repositories { ... maven { url 'https://jitpack.io' } } } dependencies { implementation 'com.github.hanjx-dut:CountDownView:1.1'

  • c# 实现控件(ocx)中的事件详解

    c#控件实现类似c++中ocx控件功能 c++中ocx控件 1.控件方法 2.控件事件 c#很容易实现c++中ocx中控件方法的功能,但是实现类似c++中ocx的控件事件,则需要一定的周折. 下面就用实例简单的介绍c#如何实现 c#中ActiveX(ocx)实现实例(vs2008环境下): using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using

  • Android 控件自动贴边实现实例详解

    目录 正文 判断交互 隐藏与显示 示例 正文 最近接到个需求,需要在用户与App交互时,把SDK中之前实现过的悬浮控件贴边隐藏,结束交互后延迟一段时间再自动显示.本篇文章介绍一下实现的思路. 判断交互 用户与App交互.结束交互可以通过监听触摸事件来实现.建议使用的Activity的dispatchTouchEvent,Activity下的所有触摸事件分发时都会回调此方法,代码如下: class AutoEdgeHideActivity : BaseGestureDetectorActivity

  • 分析10个ASP.NET控件最有用的属性详解

    1.ClientIDMode 渲染ASP.NET控件时会自动生成一个ID,当我们在客户端脚本中引用它们时,却会制造不少麻烦,虽然它是命名容器和ID的简单串联,但仍然无法预测生成的ID范围. ASP.NET 4.0使用ClientIDMode属性解决了这个问题,它允许你控制生成这些ID的方法,ClientIDMode有四个可选择的值:AutoID,Static,Predictable和Inherit.下面是这四个值的含义解释: AutoID – 和4.0以前的版本保持一致,自动生成ID. Stat

  • C#入门教程之ListBox控件使用方法

    ListBox控件的使用: 1)控件属性 Items SelectedItems SelectioModes 2)数据绑定 DataSoure DisplayMember ValueMenber 3)实例 下面开始一一说明上面的ListBox控件的使用. 首先来说控件的属性, (1)Items:使用此属性获取列表控件项的属性.此属性可用于确定列表控件中的选定项.添加items时既可以设计时静态添加,也可以在代码中动态添加.如果不想显示设计时添加的items,可以在代码中添加this.listBo

  • Android开发教程之Fragment定义、创建与使用方法详解【包含Activity通讯,事务执行等】

    本文实例讲述了Android开发教程之Fragment定义.创建与使用方法.分享给大家供大家参考,具体如下: 概述 Fragment是activity的界面中的一部分或一种行为.你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment.你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除. Fragment不能独立存在,它必须嵌入到

  • JS控件bootstrap datepicker使用方法详解

    bootstrap-datepicker沙箱环境: bootstrap-datepicker沙箱环境: 1.requirejs配置 requirejs.config({ baseUrl: '../pages/modules', // urlArgs: "v=" + (new Date()).getTime(),//禁止缓存,生产环境去除 urlArgs:'v=2016110701', paths: { jquery: ["../../plugins/jquery/jquery

  • Android开发中使用WebView控件浏览网页的方法详解

    本文实例讲述了Android开发中使用WebView控件浏览网页的方法.分享给大家供大家参考,具体如下: 项目中遇到数学展示问题,常规的Textview显示处理不了数学公式,利用图片生成对服务器又产生较大压力,经过查询,可以通过webview加载JS实现.IOS同样的方法也可实现,但JS渲染效率远高于安卓.对Webview做下总结. 1.WebView 在使用WebView控件时,首先需要在xml布局文件中定义一个WebView控件,定义的方法如下: <WebView android:id=&quo

  • Android控件之ListView用法实例详解

    本文实例讲述了Android控件之ListView用法.分享给大家供大家参考.具体如下: 示例一: 在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示. main.xml布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/LinearLayout01" androi

随机推荐