mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-02-09 17:13:46 +08:00
Add drawerLockMode prop to DrawerLayoutAndroid
Summary:Closes #5270. Closes https://github.com/facebook/react-native/pull/5534 Differential Revision: D2970771 fb-gh-sync-id: 36a814032283df7d4c469964f803b8d20d1b0c93 shipit-source-id: 36a814032283df7d4c469964f803b8d20d1b0c93
This commit is contained in:
committed by
facebook-github-bot-7
parent
9ae3714f4b
commit
ec173b1a17
@@ -28,6 +28,7 @@ var INNERVIEW_REF = 'innerView';
|
||||
var DrawerLayoutValidAttributes = {
|
||||
drawerWidth: true,
|
||||
drawerPosition: true,
|
||||
drawerLockMode: true
|
||||
};
|
||||
|
||||
var DRAWER_STATES = [
|
||||
@@ -95,6 +96,18 @@ var DrawerLayoutAndroid = React.createClass({
|
||||
* from the edge of the window.
|
||||
*/
|
||||
drawerWidth: ReactPropTypes.number,
|
||||
/**
|
||||
* Specifies the lock mode of the drawer. The drawer can be locked in 3 states:
|
||||
* - unlocked (default), meaning that the drawer will respond (open/close) to touch gestures.
|
||||
* - locked closed, meaning that the drawer will stay closed and not respond to gestures.
|
||||
* - locked open, meaning that the drawer will stay opened and not respond to gestures.
|
||||
* The drawer may still be opened and closed programmatically (`openDrawer`/`closeDrawer`).
|
||||
*/
|
||||
drawerLockMode: ReactPropTypes.oneOf([
|
||||
'unlocked',
|
||||
'locked-closed',
|
||||
'locked-open'
|
||||
]),
|
||||
/**
|
||||
* Function called whenever there is an interaction with the navigation view.
|
||||
*/
|
||||
@@ -142,6 +155,7 @@ var DrawerLayoutAndroid = React.createClass({
|
||||
ref={RK_DRAWER_REF}
|
||||
drawerWidth={this.props.drawerWidth}
|
||||
drawerPosition={this.props.drawerPosition}
|
||||
drawerLockMode={this.props.drawerLockMode}
|
||||
style={styles.base}
|
||||
onDrawerSlide={this._onDrawerSlide}
|
||||
onDrawerOpen={this._onDrawerOpen}
|
||||
|
||||
@@ -76,6 +76,19 @@ public class ReactDrawerLayoutManager extends ViewGroupManager<ReactDrawerLayout
|
||||
view.setDrawerWidth(widthInPx);
|
||||
}
|
||||
|
||||
@ReactProp(name = "drawerLockMode")
|
||||
public void setDrawerLockMode(ReactDrawerLayout view, @Nullable String drawerLockMode) {
|
||||
if (drawerLockMode == null || "unlocked".equals(drawerLockMode)) {
|
||||
view.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
|
||||
} else if ("locked-closed".equals(drawerLockMode)) {
|
||||
view.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
|
||||
} else if ("locked-open".equals(drawerLockMode)) {
|
||||
view.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
|
||||
} else {
|
||||
throw new JSApplicationIllegalArgumentException("Unknown drawerLockMode " + drawerLockMode);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean needsCustomLayoutForChildren() {
|
||||
// Return true, since DrawerLayout will lay out it's own children.
|
||||
|
||||
Reference in New Issue
Block a user