我正在制作加载屏幕,并且我已将其设置为整个屏幕的绝对位置。但是,当使用react-navigation
时,它似乎不会覆盖标题。有没有办法将我的组件放在导航库的标题组件之上?
使用react-navigation
时,您可以为该屏幕配置标头。通常,当您导航到屏幕时,您在该屏幕中呈现的任何代码都会自动放置在导航标题下方。但是,我希望我的组件占据整个屏幕并覆盖标题。我想要标题保留,但我想用不透明度覆盖它。这可能吗?
const navigationOptions = {
title: "Some Title",
};
const Navigator = StackNavigator(
{
First: { screen: ScreenOne },
Second: { screen: ScreenTwo },
...otherScreens,
},
{
transitionConfig,
navigationOptions, //this sets my header that I want to cover
}
);
这是我的loader.js
const backgroundStyle = {
opacity: 0.5,
flex: 1,
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
zIndex: 1,
};
const Loading = () =>
<View style={backgroundStyle}>
<PlatformSpinner size="large" />
</View>;
在ScreenOne.js
class ScreenOne extends Component {
render(){
if(loading) return <Loading/>;
return (
//other code when not loading that is placed under my header automatically
)
}
}
答案 0 :(得分:6)
根据您的问题,我理解的是,您希望将微调器组件渲染到所有其他组件之上,包括具有不透明度的导航标题。
执行此操作的一种方法是呈现包裹Modal
的{{1}}组件。模态组件采用全屏幕,您可以提供道具spinner
。并自定义模态的父视图以使transparent = true
如图所示。现在在任何地方显示/隐藏此Modal组件以处理加载。
使用零食进行演示:https://snack.expo.io/SyZxWnZPZ
以下示例代码
background colour with opacity
答案 1 :(得分:0)
将header: null
添加到navigationOptions
以关闭标头:
class ScreenOne extends Component {
static navigationOptions = {
header: null
}
...
}