React Native开发之——组件DrawerLayoutAndroid

前言

封装了平台DrawerLayout(仅限安卓平台)的React组件。抽屉(通常用于导航切换)是通过renderNavigationView方法渲染的,并且DrawerLayoutAndroid的直接子视图会成为主视图(用于放置你的内容)。导航视图一开始在屏幕上并不可见,不过可以从drawerPosition指定的窗口侧面拖拽出来,并且抽屉的宽度可以使用drawerWidth属性来指定。(借鉴于React Native中文官网)

组件DrawerLayoutAndroid

DrawerLayoutAndroid属性

drawerPosition enum(DrawerConsts.DrawerPosition.Left, DrawerConsts.DrawerPosition.Right)

指定 drawer 将从屏幕的一侧滑动。

drawerWidth number

指定 drawer 的宽度,即从窗口的边缘拉到视图更精确的宽度。

keyboardDismissMode enum('none', "on-drag")

确定键盘是否响应拖动被驳回。

  • 'none' (默认值), 拖动不影响键盘。
  • 'on-drag', 拖动开始,键盘被驳回。

onDrawerClose 函数

导航视图关闭时调用函数。

onDrawerOpen 函数

导航视图打开时调用函数。

onDrawerSlide 函数

与导航视图交互时调用函数。

onDrawerStateChanged 函数

当 Drawer 状态发生变化时调用函数,drawer 有 3 种状态:

  • idle, 表示与导航视图没有交互
  • dragging,表示目前有与导航视图的交互
  • settling, 表示有与导航视图的交互,并且导航视图正在的关闭或打开。

renderNavigationView 函数

导航图将被渲染到屏幕的一侧,并且可以拉出。

实例代码

import React, {Component} from 'react';
import 
{
    StyleSheet,
    Text,
    View,
    DrawerLayoutAndroid
} from 'react-native';

type Props = {};
export default class App extends Component<Props> 
{
    render() 
    {
        var navigationView = 
        (
            <View style={{flex: 1, backgroundColor: '#ff0'}}>
                <Text style={{margin: 10, fontSize: 15, textAlign: 'left'}}>I'm in the Drawer!</Text>
            </View>
        );
        return 
        (
            <DrawerLayoutAndroid
                drawerWidth={300}
                drawerPosition={DrawerLayoutAndroid.positions.left}
                renderNavigationView={() => navigationView}>
                <View style={{flex: 1, alignItems: 'center'}}>
                    <Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>Hello</Text>
                    <Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>World!</Text>
                </View>
            </DrawerLayoutAndroid>
        );
    }
}

效果图

其他

参考:Github下载