react-native 抽屉页面实现

2019-01-17  本文已影响0人  Lucky_ce60

译注:此组件仅能在 Android 上使用。我们推荐使用跨平台的react-navigation中的 DrawerNavigation 来代替此组件。

直接上代码

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

export default class FetchExample extends React.Component {

    constructor(props) {
        super(props);
        this.state = {isLoading: true}
    }

    open = () => {
        this.drawer.openDrawer();
    }

    close = () => {
        this.drawer.closeDrawer();
    }

    render() {
        let navigationView = (
            <View style={{flex: 1, backgroundColor: 'skyblue'}}>
                <Text style={{margin: 10, fontSize: 15, textAlign: 'left'}}>I'm in the Drawer!</Text>
                <TouchableOpacity onPress={this.close}>
                    <Text style={[styles.textStyle, styles.textSmall]}>点击关闭侧边栏</Text>
                </TouchableOpacity>

            </View>
        );
        return (
            <DrawerLayoutAndroid
                ref={(drawer) => {
                    this.drawer = drawer;
                }}
                //
                drawerWidth={300}
                // 设置导航视图从窗口边缘拉入的视图的宽度。
                drawerPosition={DrawerLayoutAndroid.positions.Left}
                // 设置导航视图从屏幕的哪一边拉入。
                renderNavigationView={() => navigationView}
                // 被拉入的导航视图的内容。

                onDrawerClose={() => {
                    ToastAndroid.show("close drawer", ToastAndroid.SHORT)
                }}
                // 导航视图被关闭后的回调函数。
                keyboardDismissMode='none'
                // 设置拖动过程中是否隐藏软键盘,'none' (默认),拖动时不隐藏软键盘。'on-drag',拖动时隐藏软键盘。
                onDrawerOpen={() => {
                    ToastAndroid.show("open drawer", ToastAndroid.SHORT);
                }}
                // 导航视图被打开后的回调函数。
            >
                <View style={{flex: 1, alignItems: "center"}}>
                    <Text style={{margin: 10, fontSize: 15,}}>Hello</Text>
                    <Text style={{margin: 10, fontSize: 15,}}>World!</Text>
                    <TouchableOpacity onPress={this.open}>
                        <Text style={styles.textStyle}>点击打开侧边栏</Text>
                    </TouchableOpacity>

                </View>
            </DrawerLayoutAndroid>
        );
    }
}
const styles = StyleSheet.create({
    textStyle: {
        margin: 10,
        color: 'red',
        textAlign: 'center',
        fontSize:15,
    },
    textSmall: {
        fontSize: 25,
    },

})

举个栗子:

import React, {Component} from 'react';
import FirstPage from './FirstPage';
import {
    DrawerNavigator
} from 'react-navigation';

export default class Pages extends Component {
    constructor(props) {
        super(props);
    }

    render() {
        return (
            <SimpleAppNavigator/>
        )
    }
}
const SimpleAppNavigator = DrawerNavigator({
        page1: {screen: FirstPage},
    },

    {
        initialRouteParams: {user: 'hello'},
        initialRouteName: 'page1',
        navigationOptions: {
            title: 'Hello Navigation!'
        },

    }
);
//first 组件页面
import React, { Component } from 'react';
import {
    StyleSheet,
    Text,
    View,
    Image
} from 'react-native';
export default class SecondPage extends Component {


    render() {
        const {params} = this.props.navigation.state;
        return (
            <View style={styles.container}>
                <Text style={styles.welcome}>
                    {params.user} world!
                </Text>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF',
    },
    welcome: {
        fontSize: 20,
        textAlign: 'center',
        margin: 10,
    },
    textView: {
        fontSize: 16,
        textAlign: 'center',
        margin: 10,
        color:'red'
    },
});
上一篇 下一篇

猜你喜欢

热点阅读