我完全尝试了react-native-safe-area-context中提到的内容, 我在 samsung android 9 中运行了该应用程序,它按预期工作。但是在我的带有 android 8 插图的 oppo 设备中都是 0。我使用的是 react native 0.61。
这是我的根组件。
import React from 'react';
import { StatusBar, Platform } from 'react-native';
import { Provider } from 'react-redux';
import { PersistGate } from 'redux-persist/es/integration/react';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { store, persistor } from './common/StoreBuilder';
import Routes from './routes/index';
if (Platform.OS === 'android') StatusBar.setHidden(true);
const App = () => (
<Provider store={store}>
<PersistGate persistor={persistor}>
<SafeAreaProvider><Routes /></SafeAreaProvider>
</PersistGate>
</Provider>
);
export default App;
这是我的消费者,它是上述组件的直接子级。
<SafeAreaConsumer>
{insets => {
return <View style={{
flex: 1,
paddingTop: insets.top,
paddingLeft: insets.left,
paddingBottom: insets.bottom,
paddingRight: insets.right,
}}>
<Router>
<Stack key="root" hideNavBar>
...
</Stack>
</Router>
<MessageContainer />
</View>
}}
</SafeAreaConsumer>