react-native-navigationbar-obsever
Version:
Android-NvagationShowing-Listener
84 lines (64 loc) • 1.98 kB
Markdown
Listen to device navigationbar changes in React Native applications on a per screen basis. Works on Android only.
```
npm install react-native-navigationbar-obsever --save
```
```
react-native link react-native-navigationbar-obsever
```
**Android**
1. In `android/setting.gradle`
```
...
include ':react-native-navigationbar-obsever', ':app'
project(':react-native-navigationbar-obsever').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-navigationbar-obsever/android')
```
2. In `android/app/build.gradle`
```
...
dependencies {
...
compile project(':react-native-navigationbar-obsever')
}
```
## Usage
```javascript
import NavigationbarObsever from 'react-native-navigationbar-obsever';
```
```javascript
export default class AppScreen extends Component {
// ...
componentDidMount() {
if (Platform.OS === 'android') {
NavigationbarObsever.isNavigationbarShow((err, isShow) => {
console.log(err, isShow, 'isShow');
});
//if you want to listener,you should bind first.
NavigationbarObsever.bindListener((err,isOK) => {
console.log(err, isOK, 'isOK');
});
//if you want to listener,you should addListener at second.
DeviceEventEmitter.addListener('navigationbarDidShowChange', this._navigationDidShowChange);
}
}
_navigationDidShowChange = (show) => {
console.log(show.navigationbarSize, 'navigationbarSize',show.navigationbarShow, 'navigationbarShow');
}
componentWillUnmount() {
if (Platform.OS === 'android') {
//don't forget unbind and remove
NavigationbarObsever.unbindListener();
DeviceEventEmitter.removeListener(this._navigationDidShowChange);
}
}
render() {
// ...
return (
// ...
)
}
}
```