/** * Created by YiBing on 2017/5/4. */ import React,{Component} from 'react'; import { StyleSheet,Text,View,TouchableOpacity,ToastAndroid,DrawerLayoutAndroid,TextInput,} from 'react-native'; export default class DrawerLayoutAndroidDemo extends Component { render() { var navigationView = ( <View style={{flex: 1,alignItems:'center'}}> <Text style={{width:'100%',textAlign:'center',marginTop:20}}>相册</Text> <Text style={{width:'100%',marginTop:20}}>账号信息</Text> <Text style={{width:'100%',marginTop:20}}>版本更新</Text> <Text style={{width:'100%',marginTop:20}}>关于</Text> <TouchableOpacity onPress={() => {this.drawer.closeDrawer()}}> <Text style={{width:'100%',marginTop:20}}>关闭抽屉</Text> </TouchableOpacity> </View> ); return ( /* * 抽屉布局(DrawerLayoutAndroid),属性如下: * 1.宽度--drawerWidth,类型:number * 2.背景颜色--drawerBackgroundColor,类型:rgba * 3.锁定模式--drawerLockMode,类型:enum('unlocked','locked-closed','locked-open') * unlocked (默认值),抽屉可以响应打开和关闭的手势操作。 * locked-closed,抽屉将保持关闭,不可用手势打开。 * locked-open,抽屉将保持打开,不可用手势关闭。 * 无论抽屉处于何种状态,都可以调用openDrawer/closeDrawer这两个方法打开和关闭。 * 4.抽屉位置(从屏幕哪边滑出,左边还是右边)--drawerPosition,类型:enum(DrawerConsts.DrawerPosition.Left,DrawerConsts.DrawerPosition.Right) * 5.在拖动的过程中是否隐藏软键盘--keyboardDismissMode,类型:enum('none',"on-drag") * none (默认值),拖拽不会隐藏软键盘; * on-drag 当拖拽开始的时候隐藏软键盘。 * * 抽屉布局(DrawerLayoutAndroid),回调函数如下: * 1.抽屉被关闭之后调用此回调函数--onDrawerClose * 2.抽屉被打开之后调用此回调函数--onDrawerOpen * 3.抽屉产生交互的时候调用此回调函数--onDrawerSlide * 4.抽屉的状态变化时调用此回调函数--onDrawerStateChanged,有三种状态: * idle(空闲),表示现在导航条上没有任何正在进行的交互。 * dragging(拖拽中),表示用户正在与导航条进行交互。 * settling(停靠中),表示用户刚刚结束与导航条的交互,导航条正在结束打开或者关闭的动画。 * 5.渲染一个可以从屏幕一边拖入的导航视图--renderNavigationView * 6.statusBarBackgroundColor * * 抽屉布局(DrawerLayoutAndroid),Methods如下: * 1.打开抽屉--openDrawer() * 2.关闭抽屉--closeDrawer() */ <DrawerLayoutAndroid ref={(drawerObj) => {this.drawer = drawerObj;}} drawerWidth={120} drawerPosition={DrawerLayoutAndroid.positions.Left} drawerBackgroundColor='#00ffffaa' drawerLockMode={'unlocked'} keyboardDismissMode={'on-drag'} renderNavigationView={() => navigationView} onDrawerSlide={() => {}} onDrawerOpen={() => {ToastAndroid.show("打开抽屉",ToastAndroid.SHORT);}} onDrawerClose={() => {ToastAndroid.show("关闭抽屉",ToastAndroid.SHORT);}} onDrawerStateChanged={(state) => { ToastAndroid.show(state,ToastAndroid.SHORT); }} > <View style={{flex: 1,alignItems: 'center'}}> <TouchableOpacity onPress = {()=>{ this.drawer.openDrawer(); }}> <Text style={{margin: 10,fontSize: 15,textAlign: 'right'}}>打开抽屉</Text> </TouchableOpacity> <TextInput style={{width:'80%',height:100,margin: 10,}} placeholder="keyboardDismissMode测试,这个Demo的效果:打开抽屉,软键盘隐藏" multiline={true} /> </View> </DrawerLayoutAndroid> ); } } const styles = StyleSheet.create({});
效果图: