React Native Expo StackNavigator перекрывает панель уведомлений

Я пытаюсь реализовать панель навигации для моего приложения React Native Expo. Вот проблема:

"dependencies": {
    "expo": "^18.0.3",
    "react": "16.0.0-alpha.12",
    "react-native": "^0.45.1",
    "react-navigation": "^1.0.0-beta.11"
}

Я не знаю, где и как я могу настроить стили для этого компонента, чтобы он не перекрывался с панелью уведомлений. Я пытался установить marginTop: StatusBar.currentHeight для моего корневого просмотра, но это не сработало. Это применило поле к представлению, но не к панели навигации.

Мое приложение:

import {StackNavigator} from 'react-navigation';
import Home from './app/screens/Home';

export default App = StackNavigator({
  Home: { screen: Home }
})

Главная:

export default class Home extends Component {
    constructor() {
        super();  
        // <...>
    }

    static navigationOptions = {
        title: 'Welcome'
    };

    // <...>
}

1 ответ

Решение

Если вы заверните все свое приложение в View с верхним полем, это будет работать.

Пример: https://snack.expo.io/r1gb9TGH-

В будущем мы собираемся встроить это в реагирующую навигацию, чтобы это происходило автоматически.

import React, {Component} from 'react';
import {StatusBar, View} from 'react-native'
import {StackNavigator} from 'react-navigation';
import Home from './app/screens/Home';

const RootNavigator = StackNavigator({
  Home: { screen: Home }
})

export default class App extends Component {
  render() {
    return (
      <View style={{ flex: 1, marginTop: StatusBar.currentHeight }}>
        <RootNavigator />
      </View>
    )
  }
}

Добавить эту строку в app.json файл

"translucent": false

в "androidStatusBar"

нравится:

"androidStatusBar": {
  "barStyle": "light-content",
  "backgroundColor": "#3a81fd",
  "hidden": false,
  "translucent": false
},

подробнее читайте в: Настройка документов StatusBar

Другие вопросы по тегам