如何使用 DrawerLayoutAndroid 组件在 react-native 应用程序中构建抽屉?
How to use DrawerLayoutAndroid component for building drawer in react-native apps?
我是 React Native 的新手,我正在尝试构建汉堡包抽屉以协助导航。但是我找不到合适的文档。我找到了一个,但它与 redux 一起使用,所以我放弃了。谁能指导我如何为 React-Native 应用程序创建抽屉布局?
您可以从以下代码示例中获得帮助:
您的 toolbar.js 可以是:
'use strict';
import React, { Component } from 'react';
import {
StyleSheet,
View,
Text
} from 'react-native';
var ToolbarAndroid = require('ToolbarAndroid');
class MyToolbar extends Component {
render() {
var navigator = this.props.navigator;
return (
<ToolbarAndroid
title={this.props.title}
navIcon={require('./icons/ic_menu_white_24dp.png')}
style = {styles.toolbar}
titleColor={'white'}
onIconClicked={this.props.sidebarRef}/>
);
}
const styles = StyleSheet.create({
//define your own style
}
});
module.exports = MyToolbar;
并用于实现抽屉:
'use strict';
import React, { Component } from 'react';
import {
StyleSheet,
View,
Text,
Navigator,
TouchableHighlight,
TouchableOpacity,
DrawerLayoutAndroid,
ScrollView,
} from 'react-native';
var ToolbarAndroid = require('ToolbarAndroid');
var MyToolbar = require('./MyToolbar');
var MenuItem = require('./MenuItem');
class OpenDraweFromToolbar extends Component {
render() {
var navigationView = (
<ScrollView>
<View style = {{height:100, backgroundColor:'blue', justifyContent:'center'}}>
<Text style = {{height:25, color:'white', fontSize:25, marginLeft:20}}>Welcome To ReactNative</Text>
</View>
<ListView
//render your list items
</ScrollView>
);
return (
<DrawerLayoutAndroid
drawerWidth={300}
drawerPosition={DrawerLayoutAndroid.positions.Left}
renderNavigationView={() => navigationView}
ref={'DRAWER'}>
<MyToolbar style={styles.toolbar}
title={'Calendar'}
navigator={this.props.navigator}
{sidebarRef={()=>this._setDrawer()}}/>
<View style={{flex: 1, alignItems: 'center'}}>
<Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>Hello</Text>
</View>
</DrawerLayoutAndroid>
);
}
_setDrawer() {
this.refs['DRAWER'].openDrawer();
}
}
const styles = StyleSheet.create({
//your own style implementation
});
module.exports = OpenDraweFromToolbar;
你应该将drawerlayout打开方法作为props传递给toolbar,在你的toolbar组件中你应该调用sidebarRef作为props,它会自动调用前面OpenDraweFromToolbar.js的drawerlayout打开方法。
希望以上sample.Happy编码对你有所帮助!!!
我是 React Native 的新手,我正在尝试构建汉堡包抽屉以协助导航。但是我找不到合适的文档。我找到了一个,但它与 redux 一起使用,所以我放弃了。谁能指导我如何为 React-Native 应用程序创建抽屉布局?
您可以从以下代码示例中获得帮助: 您的 toolbar.js 可以是:
'use strict';
import React, { Component } from 'react';
import {
StyleSheet,
View,
Text
} from 'react-native';
var ToolbarAndroid = require('ToolbarAndroid');
class MyToolbar extends Component {
render() {
var navigator = this.props.navigator;
return (
<ToolbarAndroid
title={this.props.title}
navIcon={require('./icons/ic_menu_white_24dp.png')}
style = {styles.toolbar}
titleColor={'white'}
onIconClicked={this.props.sidebarRef}/>
);
}
const styles = StyleSheet.create({
//define your own style
}
});
module.exports = MyToolbar;
并用于实现抽屉:
'use strict';
import React, { Component } from 'react';
import {
StyleSheet,
View,
Text,
Navigator,
TouchableHighlight,
TouchableOpacity,
DrawerLayoutAndroid,
ScrollView,
} from 'react-native';
var ToolbarAndroid = require('ToolbarAndroid');
var MyToolbar = require('./MyToolbar');
var MenuItem = require('./MenuItem');
class OpenDraweFromToolbar extends Component {
render() {
var navigationView = (
<ScrollView>
<View style = {{height:100, backgroundColor:'blue', justifyContent:'center'}}>
<Text style = {{height:25, color:'white', fontSize:25, marginLeft:20}}>Welcome To ReactNative</Text>
</View>
<ListView
//render your list items
</ScrollView>
);
return (
<DrawerLayoutAndroid
drawerWidth={300}
drawerPosition={DrawerLayoutAndroid.positions.Left}
renderNavigationView={() => navigationView}
ref={'DRAWER'}>
<MyToolbar style={styles.toolbar}
title={'Calendar'}
navigator={this.props.navigator}
{sidebarRef={()=>this._setDrawer()}}/>
<View style={{flex: 1, alignItems: 'center'}}>
<Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>Hello</Text>
</View>
</DrawerLayoutAndroid>
);
}
_setDrawer() {
this.refs['DRAWER'].openDrawer();
}
}
const styles = StyleSheet.create({
//your own style implementation
});
module.exports = OpenDraweFromToolbar;
你应该将drawerlayout打开方法作为props传递给toolbar,在你的toolbar组件中你应该调用sidebarRef作为props,它会自动调用前面OpenDraweFromToolbar.js的drawerlayout打开方法。
希望以上sample.Happy编码对你有所帮助!!!